Updated 5/2/25 by K. Lenderman - all code up to date & graphs generated - commented out outputs for 2023 & 2024 graphs

This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.


Attaching package: ‘reshape2’

The following object is masked from ‘package:tidyr’:

    smiths

This code chunk merges all .csv files within the Tissue processing folder into one data frame and outputs the full dataset into a .csv master file. This allows us to download the raw data as a .csv, add it to the repository folder, and create the master data file without copying and pasting data in excel.

reading in .csv files from local folder


#data_all <- list.files(path = "Lab_Data_TissueProcessing/raw_data/Files_by_Month",                           # Identify all CSV files
# pattern = "*.csv", full.names = TRUE) %>% 
#lapply(read_csv) %>%   # Store all files in list
#  bind_rows          # Combine data sets into one data set 
#data_all                                            # Print data to RStudio console


#as.data.frame(data_all)  # Convert tibble to data.frame


#Filtering NAs and unnecessary columns
#data_all <- data_all %>% filter(!is.na(date_collected))
#data_all <- select(data_all, -light_regime, -oyster_zone)


#write.csv(data_all, "Master_files/tissue_processing_all_data.csv", row.names=FALSE)




##### USE THIS CODE TO MERGE DATA FILES - some of the files have columns that are not the same format (dates specifically), which was causing issues in merging. This code below should solve that problem. It converts all date columns to dates and m/d/y format #####



file_paths <- list.files(path = "Lab_Data_TissueProcessing/raw_data/Files_by_Month",
                          pattern = "*.csv", full.names = TRUE)


data_all <- lapply(file_paths, function(file_path) {
  read_csv(file_path) %>%
    mutate(
      date_collected = as.Date(date_collected,format = "%m/%d/%Y"),
      date_processed = as.Date(date_processed,format = "%m/%d/%Y"),
      date_davidsons = as.Date(date_davidsons,format = "%m/%d/%Y"),
      date_etoh = as.Date(date_etoh,format = "%m/%d/%Y")
    )
}) %>%
  bind_rows
New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 38 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, oyster_zone, condition
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): light_regime, dissection_notes, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, .....
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (18): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, ...29, ...30,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 27── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl  (2): lab_sample, height_mm
lgl (18): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17, ...18, ...19, ...20, ...21, ...22, ...23, ...24,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 27── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl  (2): lab_sample, height_mm
lgl (18): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17, ...18, ...19, ...20, ...21, ...22, ...23, ...24,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (18): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, ...29, ...30,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 27── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl  (2): lab_sample, height_mm
lgl (18): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17, ...18, ...19, ...20, ...21, ...22, ...23, ...24,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 998 Columns: 27── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl  (2): lab_sample, height_mm
lgl (18): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17, ...18, ...19, ...20, ...21, ...22, ...23, ...24,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 46 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, .....
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 27── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl  (2): lab_sample, height_mm
lgl (17): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17, ...18, ...19, ...20, ...21, ...22, ...23, ...24, ...25, ...26,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 998 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, .....
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (21): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ......
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (21): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ......
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, .....
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (21): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ......
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (21): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, date_etoh, ...21, ...22, ...23, ...24, ......
date  (3): date_collected, date_processed, date_davidsons
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (18): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, ...29, ...30,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (18): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, ...29, ...30,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (4): lab_id, site, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (20): oyster_zone, light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (5): lab_id, site, oyster_zone, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (19): light_regime, mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 33── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): lab_id, site, oyster_zone, light_regime, condition, dissection_notes
dbl   (5): lab_sample, ww_total_g, height_mm, length_mm, width_mm
lgl  (18): mantle_rftm, ggr1_etoh, ggr2_etoh, adductor_etoh, cross_histology, ...21, ...22, ...23, ...24, ...25, ...26, ...27, ...28, ...29, ...30,...
date  (4): date_collected, date_processed, date_davidsons, date_etoh
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 27── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl  (2): lab_sample, height_mm
lgl (17): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17, ...18, ...19, ...20, ...21, ...22, ...23, ...24, ...25, ...26,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (8): lab_id, date_collected, site, date_processed, condition, sample_notes, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (7): mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 36 Columns: 17── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): lab_id, date_collected, site, date_processed, condition, date_davidsons, date_etoh
dbl (2): lab_sample, height_mm
lgl (8): sample_notes, mantle_rftm, ggr1_frozen, ggr2_etoh, cross_histology, ...15, ...16, ...17
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
as.data.frame(data_all)  # Convert tibble to data.frame

data_all <- data_all %>% filter(!is.na(date_collected))
data_all <- select(data_all, -light_regime, -oyster_zone)


View(data_all)

write.csv(data_all, "Master_files/tissue_processing_all_data.csv", row.names=FALSE)

#A wrong value caliper input was identified for the height of sample 0923GOLD_23. This code is removing that value from the data set as we cannot conclude what this original value was. The value is 8.62. This will cause this individual to fall out of the dataset when standardized to length. This code does not completely remove the individual from the dataset.

data_all$height_mm[data_all$height_mm == "0"] <- NA

adding a month & year column to the data

data_all <- data_all %>% dplyr::mutate(date_collected= as.Date(date_collected), month = month(date_collected))

data_all <- data_all %>% dplyr::mutate(date_collected= as.Date(date_collected), year = year(date_collected))

#changing numeric month to month name
data_all$month <- factor(data_all$month, levels = c("1","2","3","4","5","6","7", "8", "9", "10", "11", "12"),
        labels=c("Jan","Feb", "March","April","May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"))

data_all

This chunk of code creates a numerical value in a new column for the body condition scores


data_all<- data_all %>%
 dplyr::mutate(condition_score = recode(condition, "1_very_good" = 1, "2_good" = 2, "3_good_minus"= 3, "4_fair_plus"= 4, "5_fair"= 5,"6_fair_minus"=6,"7_poor_plus"=7, "8_poor"= 8, "9_very_poor"= 9))
Warning: There was 1 warning in `dplyr::mutate()`.
ℹ In argument: `condition_score = recode(...)`.
Caused by warning:
! Unreplaced values treated as NA as `.x` is not compatible.
Please specify replacements exhaustively or supply `.default`.
head(data_all)
NA
NA

#This chunk of code is removing 0723LAUR_20 and 0723LAUR_26 from the datasheet as they have been identified as spat on shell to avoid bias in the data. During this sample collection there were animals that were significantly smaller than the single set oysters. These individuals should be removed from all monthly sampling related datasheets including disease analysis. All tissue amples will be disgarded.

data_all <- data_all %>%
  subset(lab_id != "0723LAUR_20") %>%
  subset(lab_id != "0723LAUR_26")

data_all
NA

Summary of all data - height

st_height <- summarySE(data_all%>% filter(!is.na(height_mm)), measurevar="height_mm", groupvars=c("site", "date_collected"))

st_height 

#Calculate completeness for QC
st_height$Completeness <- st_height$N /30

st_height

write.csv(st_height, "Lab_Data_TissueProcessing/output\\Completeness_tissue_processing_data.csv", row.names=FALSE)

#Mean Height

ggplot(data=data_all, aes(x=site, y=height_mm, fill=site)) +
  geom_boxplot()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Mean Shell Height ", x ="site", y = "Mean Shell Height (mm)") + facet_wrap(.~year)

#Body condition


ggplot(data=data_all, aes(x=site, y=condition_score, fill=site)) +
  geom_boxplot()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Mean Condition Score ", x ="site", y = "Mean Body Condition Score")+ scale_y_reverse()+ facet_wrap(.~year)


mean_body_condition <- data_all %>%
  dplyr::group_by(site, month, year)%>%
  dplyr::summarize(mean_bsc = mean(condition_score, na.rm = TRUE))
`summarise()` has grouped output by 'site', 'month'. You can override using the `.groups` argument.
mean_body_condition

#for overlay graph
#mean_bcs_ashc <- mean_body_condition %>%
  #filter(site == "ASHC") %>%
  #filter(year == "2024")

#Mean body condtion scores - 2023
data_2023 <- data_all%>%  filter(year=="2023")
  
ggplot(data=data_2023, aes(x=month, y=condition_score, group = month, fill = site)) +
  geom_boxplot()+ 
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = -35, vjust = 0.5, hjust=1))+
  labs(title="Mean Condition Score - 2023", x ="month", y = "Mean Body Condition Score")+ scale_y_reverse()+facet_wrap(~site)


#Mean body condtion scores - 2024
data_2024 <- data_all%>%  filter(year=="2024")
  
ggplot(data=data_2024, aes(x=month, y=condition_score, group = month, fill = site)) +
  geom_boxplot()+ 
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = -35, vjust = 0.5, hjust=1))+
  labs(title="Mean Condition Score - 2024", x ="month", y = "Mean Body Condition Score")+ scale_y_reverse()+facet_wrap(~site)


#Mean body condition scores - 2025
data_2025 <- data_all%>%  filter(year=="2025")
  
ggplot(data=data_2025, aes(x=month, y=condition_score, group = month, fill = site)) +
  geom_boxplot()+ 
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = -35, vjust = 0.5, hjust=1))+
  labs(title="Mean Condition Score - 2025", x ="month", y = "Mean Body Condition Score")+ scale_y_reverse()+facet_wrap(~site)

#Proportions graph Body condition scores

#Proportions graph Body condition scores - 2023

df_BCS_proportions2023<- data_2023 %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ "1", condition_score == 2 ~"2",condition_score == 3 ~ "3", condition_score == 4 ~"4",condition_score == 5 ~ "5", condition_score == 6 ~"6",condition_score == 7 ~ "7", condition_score == 8 ~"8", condition_score ==9 ~"9", TRUE ~ as.character(condition_score))) %>%

  group_by(site, month, year, condition_score_bin) %>% dplyr ::summarise(Count= n()) %>%

  ungroup() %>%
  mutate(Proportion = Count/sum(Count))
`summarise()` has grouped output by 'site', 'month', 'year'. You can override using the `.groups` argument.
df_BCS_proportions2023<- na.omit(df_BCS_proportions2023)

BCS_proportion_all_2023<- ggplot(data=df_BCS_proportions2023, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat="identity", position = "fill", colour = "black")+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title="Proportion of body condition scores - 2023", x ="month", y = "Proportion of body condition scores ")+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  scale_fill_brewer(palette = "Blues", direction = -1)+
  facet_wrap(~ site)

BCS_proportion_all_2023


#pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/all_BCS_proportion_2023.pdf"), height = 7, width = 13)
#print(BCS_proportion_all_2023)
#dev.off()
#Proportions graph Body condition scores - 2024
df_BCS_proportions2024<- data_2024 %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ "1", condition_score == 2 ~"2",condition_score == 3 ~ "3", condition_score == 4 ~"4",condition_score == 5 ~ "5", condition_score == 6 ~"6",condition_score == 7 ~ "7", condition_score == 8 ~"8", condition_score ==9 ~"9", TRUE ~ as.character(condition_score))) %>%

  group_by(site, month, year, condition_score_bin) %>% dplyr ::summarise(Count= n()) %>%

  ungroup() %>%
  mutate(Proportion = Count/sum(Count))
`summarise()` has grouped output by 'site', 'month', 'year'. You can override using the `.groups` argument.
df_BCS_proportions2024<- na.omit(df_BCS_proportions2024)

BCS_proportion_all_2024<- ggplot(data=df_BCS_proportions2024, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat="identity", position = "fill", colour = "black")+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title="Proportion of body condition scores - 2024", x ="month", y = "Proportion of body condition scores ")+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  scale_fill_brewer(palette = "Blues", direction = -1)+
  facet_wrap(~ site)

BCS_proportion_all_2024


#pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/all_BCS_proportion_2024.pdf"), height = 7, width = 13)
#print(BCS_proportion_all_2024)
#dev.off()
#Proportions graph Body condition scores - 2025
df_BCS_proportions2025<- data_2025 %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ "1", condition_score == 2 ~"2",condition_score == 3 ~ "3", condition_score == 4 ~"4",condition_score == 5 ~ "5", condition_score == 6 ~"6",condition_score == 7 ~ "7", condition_score == 8 ~"8", condition_score ==9 ~"9", TRUE ~ as.character(condition_score))) %>%

  group_by(site, month, year, condition_score_bin) %>% dplyr ::summarise(Count= n()) %>%

  ungroup() %>%
  mutate(Proportion = Count/sum(Count))
`summarise()` has grouped output by 'site', 'month', 'year'. You can override using the `.groups` argument.
df_BCS_proportions2025<- na.omit(df_BCS_proportions2025)

BCS_proportion_all_2025<- ggplot(data=df_BCS_proportions2025, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat="identity", position = "fill", colour = "black")+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title="Proportion of body condition scores - 2025", x ="month", y = "Proportion of body condition scores ")+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  scale_fill_brewer(palette = "Blues", direction = -1)+
  facet_wrap(~ site)#, scales = "free")

BCS_proportion_all_2025

pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/all_BCS_proportion_2025.pdf"), height = 7, width = 13)
print(BCS_proportion_all_2025)
dev.off()
png 
  2 


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuI1dpbnRlciBzYW1wbGluZyBcbndpbnRlcl9iY3MgPC0gcmJpbmQoZGZfQkNTX3Byb3BvcnRpb25zMjAyNCwgZGZfQkNTX3Byb3BvcnRpb25zMjAyNSlcblxud2ludGVyX2JjcyA8LSB3aW50ZXJfYmNzICU+JSBmaWx0ZXIobW9udGggPT0gXCJEZWNcInxtb250aCA9PSBcIkphblwifG1vbnRoID09IFwiRmViXCIpXG5cbkJDU19wcm9wb3J0aW9uX3dpbnRlcjwtIGdncGxvdChkYXRhPXdpbnRlcl9iY3MsIGFlcyh4PWZhY3RvciAobW9udGgsIGxldmVsPWMoJ0RlYycsICdKYW4nLCAnRmViJykpLCB5PSBQcm9wb3J0aW9uLCBmaWxsPWNvbmRpdGlvbl9zY29yZV9iaW4pKSArXG4gIGdlb21fYmFyKHdpZHRoID0gLjUsIHN0YXQ9XCJpZGVudGl0eVwiLCBwb3NpdGlvbiA9IFwiZmlsbFwiLCBjb2xvdXIgPSBcImJsYWNrXCIpKyAgXG4gICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XCJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyAtIFdpbnRlciBTYW1wbGluZyAyMDI0LTIwMjVcIiwgeCA9XCJNb250aFwiLCB5ID0gXCJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyBcIikrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCkpK1xuICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKStcbiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9IFwiQmx1ZXNcIiwgZGlyZWN0aW9uID0gLTEpK1xuICBmYWNldF93cmFwKH4gc2l0ZSlcblxuQkNTX3Byb3BvcnRpb25fd2ludGVyXG5gYGAifQ== -->

```r
#Winter sampling 
winter_bcs <- rbind(df_BCS_proportions2024, df_BCS_proportions2025)

winter_bcs <- winter_bcs %>% filter(month == \Dec\|month == \Jan\|month == \Feb\)

BCS_proportion_winter<- ggplot(data=winter_bcs, aes(x=factor (month, level=c('Dec', 'Jan', 'Feb')), y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\, colour = \black\)+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title=\Proportion of body condition scores - Winter Sampling 2024-2025\, x =\Month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  scale_fill_brewer(palette = \Blues\, direction = -1)+
  facet_wrap(~ site)

BCS_proportion_winter
```

<!-- rnb-source-end -->
```r
#Winter sampling 
winter_bcs <- rbind(df_BCS_proportions2024, df_BCS_proportions2025)

winter_bcs <- winter_bcs %>% filter(month == \Dec\|month == \Jan\|month == \Feb\)

BCS_proportion_winter<- ggplot(data=winter_bcs, aes(x=factor (month, level=c('Dec', 'Jan', 'Feb')), y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\, colour = \black\)+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title=\Proportion of body condition scores - Winter Sampling 2024-2025\, x =\Month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  scale_fill_brewer(palette = \Blues\, direction = -1)+
  facet_wrap(~ site)

BCS_proportion_winter

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1wbG90LWJlZ2luIGV5Sm9aV2xuYUhRaU9qUXpNaTQyTXpJNUxDSjNhV1IwYUNJNk56QXdMQ0prY0draU9pMHhMQ0p6YVhwbFgySmxhR0YyYVc5eUlqb3dMQ0pqYjI1a2FYUnBiMjV6SWpwYlhYMD0gLS0+XG5cbjxpbWcgc3JjPVxcZGF0YTppbWFnZS9wbmc7YmFzZTY0XG4ifQ== -->

<img src=:image/png;base64




<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1wbG90LWJlZ2luIC0tPlxuXG48aW1nIHNyYz1cImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBcndBQUFHd0NBTUFBQUI4VGthWEFBQUIybEJNVkVVQUFBQUFBRG9BQUdZQU9qb0FPbVlBT3BBQVpwQUFacllJVVp3WkdUOFpHV0laUDRFWllwOGFHaG94Z3Iwek16TTZBQUE2QURvNkFHWTZPZ0E2T2pvNk9tWTZPcEE2Wm1ZNlpwQTZaclk2a0xZNmtOcy9HUmsvR1Q4L0dXSS9QNEUvZ2IxTlRVMU5UVzVOVFk1TmJxdE5qbzVOanNoaUdSbGlHVDlpUDRGaVltSmluOWxtQUFCbUFEcG1BR1ptT2dCbU9qcG1PbVptT3BCbVpqcG1abVptWnBCbWtHWm1rSkJta0xabWtOdG10cEJtdHJabXR0dG10djlycnRadVRVMXVUVzV1VFk1dWJtNXVxK1NCUHhtQlB6K0JQMktCbjRHQnZaK0J2ZG1PVFUyT1RXNk9qbzZPcStTT3lQK1FPZ0NRT2pxUU9tYVFaZ0NRWmpxUVptYVFrRHFRa0dhUWtMYVF0bWFRdHBDUXRyYVF0dHVRMjl1UTIvK2V5dUdmWWhtZm4yS2YyZG1yYmsycjVPU3I1UCsyWmdDMlpqcTJrRHEya0dhMnRwQzJ0cmEydHR1MjI1QzIyN2EyMjl1MjIvKzIvN2EyLzl1Mi8vKzlnVCs5MmRuRzIrL0lqazNJeVAvSS8vL1puMkxadllIWjJaL1oyYjNaMmRuYmtEcmJrR2Jia0pEYnRtYmJ0cERidHJiYnR0dmIyNURiMjdiYjI5dmIyLy9iLzdiYi85dmIvLy9rcTI3a3lJN2s1TWprNVAvay8vL3Y4Ly8vdG1iL3lJNy8yNUQvMjdiLzI5di81S3YvNU9ULy83Yi8vOGovLzl2Ly8rVC8vLzlCOU56ZkFBQUFDWEJJV1hNQUFBN0RBQUFPd3dISGI2aGtBQUFnQUVsRVFWUjRuTzJkalh2YjFuWEdRVm1xMnJWWm1OcUs1YW5yeWlUVDFrV2R2Q1ZlM1RXYTA2ajdxTFpaWGUybXExTXRpMlo2dGJQWm5aT3BUcHF3czd4YWJxUjJLVWxabFNqOHI3c2YrTHdBU0lBNEFBK0k5MzBlaVNRSUhKeUQrK1BGd2IwWEY1WU5RUldWTldrSElHaGNBVjZvc2dLOFVHVUZlS0hLQ3ZCQ2xSWGdoU29yd0F0VlZvQVhxcXhJNE8xWVNyTnZaZHFxLzJmMzdjSG0zSDZxbFc5WjFyeGM4M2hsUG1HTndXYlNOME1rTjFJK1pISm1iTFViVy9LbFk2a2RpZjE5RXQ2bDlDTEoweCtmdGF3emwxTTVLQU1aRWN5dXNEWjdUNzQ3WExXc2hYdmhaYlp4b0lldjNWYWx2NVRHTTFwUndtdFphNW0ybWtuUFMxY1lWd2V6S0hpek9ETyt1dm9JdFMwRnNZakYyS1gwSXNsUmZZUlRlVGdhM3E0eUpyMDRYcEh2NUg3OVpkckgrWlJyTzY1VkZsNTl6QittTzdUR1ZxblVkWDhYQmNDYjJabnhwYjAvWHZuNmlpenFidVRIbnV4RjE1b1R0ZHpoWnFyNlllU3ZjTERaZU1zZS9MdmtzMlA5M3I1NHR4UmNacXY2YUQ3bDJ2MW1HcCtLRUNXOGRudm12cUNoWTgzY1U2Y1hlVkk1WGxucU5xM1pMZm0xdTB5dDAyaktYNnMrelA0WGM3ZlBXbzF2ZUliZEw5ck96MTBWdjdSM0wvaXQrTm1JUlhjRmh4cUg0eFczRm5nWTNiVy9CM2NqZGZZZTdjemdtcWhvWGt1dzZnZXR6cW4rdW1IcFBYUWJQMUsvbVk0OFhLcU8xRHRTVmRpU2YycDJ6YXBEckd0RVRmOURjY2FXanZXYlN3K2I0bzA0SW92N2dVUHQxcnhHdEkzTDdrOVZiR2dISzJqNTMxK21WdmltWDB1TVdMdnJWdGFsaXg3ZU0wMVJBWGViemtubGVPVjgwem05ZU12VU9yT3JIaStCTDhMWmgvZEZFTjR6RVhzNmJabGRuWGZLMWp1YVhTdTZhMjhQM2taaGVKT2NjVDZ1eFZ0VlFmZU5UZDB3ekNQVm1kdDNzeFQ5NSt6SWdiZHZtSFZDOFUvTEhkZXhmbE1lM01ZUG15cXA4ZzkxeExLM1RlamtKRTg3enBtczdWYjUrbFFrbGtaT2NZbHJkMmIrMmYwMWx5emF0RUdTSUkreStQK2F2aTRSU2RMOHZqcTkrTXYwT3JaZmdJRXZ4RlZaeHozRS9oZkJ0RUdmdU9aRCt4Q25NSEZHblhjT2E5c3BjSEZxMnhKT0xkbHhlL0EzQ3VXOGljNzBteGZFWlYxelBzR3FDbHBXdHJ0aUZXL2RpT1FwZHVDY0l1UUp3dG1sdXlQdGhXdkdPVTVhdDZ6RytSdFBkRml5TnU2ci9RZ1BIbXJndzRmYWd6Y1NiYkRZRlA5cUZ4MzM5OTVSQjdvdHJSbnVKNjdkSHVONmgwYWtGMnpxUnkveGNRcE9YRndmcnlpU0JGVCtNcjJPeDR2NWhYZlkvQytDOE9vVFY5Q2VQcVRxc3d1RnMvMlNhY2pmZzc5UkNONGh6cHo1K3QyaFZ0MlNsYTQ1NjBZa2ZaTUF5MWZwcTBiTTI1SDB3amZqSENkSGo2ODF2VnhrNy9iMXBqV3ZQVkJIUk5yeEQ3VVByMnRaVjl6aDM5TkRuYkNHY0ZUTDFLbkxoRGR4YlpYOVpyM2VvUkVsdkRwUGswRTRPWHhYd3F1T1FVY2k1aTV6OGlxZmwvQVhBejh6Yzc4SXdyc1VzYWUvVkp1cGduTHJCZTlLSW00UC9rWUd2QW5PNkFwbThWNnkxYTcvRTNiWDlZK09XNFdLT3Ezcm5CMkNxWU4zQnI0Zk1CTzU3aHJzWHBTR2RGNWhPVDlBZllUOXVyS2pOd3hiMXJnRnIya0h0eXhkVWdFY2c4djBqOGwxZmNqYWJtQVR5SHhKYzE1NzR2REtlc2ZOR29qaHRYZFhWZWFkQmw1M1hYMTBndkIySGYvRS90cnpka1o0YmFlR3RjNy80TjFmcnVTQzEwMUpuT09wMGkxM21YOGlkVjBmdHJiTHdCVEJHMDRid3FmNUNMemhMd0x3eHFVTjgzWjgydUJjckZuZjlOb2FZay93N2g3OGpSTFRCZ05lb2NmZnM5WVNyUnBOUm5MZDZLR1NsL0ZML21zTXZMNlpBTHhPU3VEa1gydTJtL09HNFhVUGRSUmVNMjBRT2ZCcmdYMm8vOTZ5UUJhWVltM25lTFJueW1ockRLc1llRU1YYkpFTExCZGU3N280L0lYSFM4SUYyNUlkdldCN1RYN1VXSi96anJtNnRPcXZ4Ty9CMzBqRE84cVpyb2hEN0ZpU21taFZKbitIQWg1djNlaWhHbXllZjI3TGZ6WGhWVjY0Wm9JMWIxdGxJWU9IVGZYNzJwZk5hVTU3VlFCZS8xQ2I4Sm9YYlA1SnZpMDN1aVhaRHAvNGd6bnYwTFhWQmFiWFBseXFpb0hYRGpTVnFhWXQxU2ZqTndGcGVHTmFwOEtWbmQ4WUZvRDNmTVNlUHRQS1ZpOWwxWGVtNjdWdXhlekIyMGpETzhvWnA5bEovWkRpcmJvbi9LWEF1akhIeXZHdmJibVZXQkJldVhYQWpHOUJkMjJGMnZDaThMcUhPZ3F2MFZUbVpNMXlYYS9QTExCTTc5Q2pjY1RhNFo2NU1sVVF2SGJmNjZTUW5RcjYycVh2Ti8rcllRcXIxcnp1Mnc5L0VUaFR1MStFY2w1aDcvbVFQWlZpenY2WDNpeDBSUzFiNWwrTDdscnZ3ZDFJbndWSE9xTTZIaTdzSjF2Vm44KzhGbG8zb3E0RFVOYzVVWVFRazE3c2UyWkNPYThhMjlCUUIxTDFqYnlsRWdnajUzVU9kUXk4eXVtL2RJRjBFd05aYm01UFMzQ1pIWUozMU5yUzMrZnYyZVdyNkZGbHlkMjVCU25hNTFvWGpUN1VmdGZqZEdqYTREMWNuVUI3SXc4Tk85VDk1bWRFRnQ2ZXNoLzJkTUVyVTdMcHFsd3lhTmloSHBhRlYxZlRCYThvb3dzbDdvNlhoaDdxSVZsNGRZVTdLYURLQ3ZCQ2xSWGdoU29yd0F0VlZvQVhxcXdBTDFSWlVjRDdiQzFVeDJDWml3VGVqMnVnWitzWUxITUIzcFFDdlB3RWVGTUs4UElUNEUwcHdNdFBnRGVsQUM4L0FkNlVBcno4QkhoVEN2RHlFK0JOS2NETFQxV0I5MmQvL0IzNS80K2VlZVozM3ZuNHd5Ky9JejZvL3g4ODg4d3puMysvQkFkS2cvZkRMNG1RbnZtS2Z2bmNkejc4MHNzZmx4MHI0S1hWQjMveUZjbXVLTWozUHYrK0QrOTdBdVdQM3k2alJNdURWd1hudmdpV1pZamx4Z3A0U2ZYUlgvL2RWOS9YQlNycVlBOWVYUjkvOU8yWGkvZGdZdkIrK1YrL1VIYXNnSmRVSC83QisyKy9MRXBPMXpzZXZCK1VjeGFWbWh5ODc0akl5NDBWOEpMcXZhOTgvSUdvZ0dUYTk3bnZPR21oeUg3VnNuSlViczc3QlNkR2xTTDk3S3Z5ZjRteEFsNUtmZlJ0eGFwNi8rSHYrMm1EcUpBTDM3ZWpDZGE4NHFkYmJxeUFsMUtxNE41K1dWYytiNzljcjV6M0haSHgveTF5M2hoVkE5NzNaSWw5OEFYVjJoQzhZS3REYTROOFZVME9hRzB3VlFsNFAvb2JXWkNDV3RuT0szUGVxVzduZGVEVmViMXpsbEhnb3AzWFVDWGc1U0Qwc1BFVDRFMHB3TXRQZ0RlbEFDOC9BZDZVQXJ6OEJIaFRDdkR5RStCTktjRExUNWkzSWEzcUdDeHprY0JMWUlPOW5qVmVwMW9WQ1JMd3BoVGc1U2ZBbTFLQWw1OEFiMG9CWG42S2dYZjNvdnZJNTVTcVNLajVCSGo1S1F6dlFEMTdOT3ZqRENzU2FqNEJYbjRLdzl1MjVqN1p0SmE2MlI0a1c1RlE4d253OGxNSVh2bE02SDVUUHFvOTB5TzhLeEpxUGdGZWZnckJLNkh0V2pQM1EvQWVmZXVCKzdiWGFyMXdNL1JHcVNLaDVoUGc1YWNJdkIyUk12U2IvcU1TVHpaZWRPSHRDV0Rsbi85R3F5S2g1aFBnNVNjejUxMW9XbXZpeGN0NVJSM3J3bnU2dlM3Kzd5ejdieHhWSk5SOEFyejhaTFkyV05ZRlVRSFB1bGxEcjdYZWMrRTl1bkpWL0Q5NDhZSDN4bG1wSXFIbUUrRGxKN09kOTZuSUZ3Wjd3U1UrdksvZjFCKzlOODRhRlFrMW53QXZQNDN1WWZNZzFWbXUrTys5c1oxQlZvbkcweWlOa3pSMmNwa1pDUzhISjZtRFphNkkvNC9ldlBUSi93WVhESWRYS3JrOFB6dGFxUXJpZDBjckRSZDUzQmtONzErTlZ0Rk9CdTNrT1diVmhQZGgwN0ptZnJJeUYzaTJmWTYwZ1VWQkVMa0RlUGtwN0gvWG12M1BsWm43Yld2Slg1YmpnbzFGUVJDNUEzajVLZExESnR0NmcrMjhQcnpabThwWUZBU1JPNENYbnlLZEZPNmZ0N0EzZmljRmk0SWdjZ2Z3OGxOS2VFKzNaVDE3NFBZS0g2VHJIbVpSRUVUdUFGNStNbnZZMXZUNEJwcFJaU3dLZ3NnZHdNdFBZZi83emNiNVp1TXZta1RqZVZrVUJKRTdnSmVmRFAvN3E3THRlbllyazQzaU95bUk0S1ZvdHk4Y1hnN0hySkx3UG5waUR4N2ZmWkxSUm5KNTBrQkhCaTlGZVJZT0w0ZGpWa1Y0TXc1Q2R3VjRsWFhBVzdZQWI4YnlCTHg4WlBTd05UK1ROV2V3QWE5akhmQ1dyWEROZTdIcFhCSFEzTVBHb2lDSXpBQmVmZ3AzRDE5LzFkR2wvYVFOWWdSNGxYWEFXN1lLblRHSFJVRVFtUUc4L0FSNE01WW40T1VqMC8vZFY4NmRPLzlXTmh1QVYxa0h2R1VyN0wrOEFiTWhMdHJtc3FTOGdGZGJCN3hsSyt4L3g1cTlaOXVIcThIQjZLTUZlSlYxd0Z1MklvUFI1V3RvTVBwb0FWNWxIZkNXcmRnZU5xcTV5bGdVQkpFWndNdFBCcnh1elF0NGs0SUV2SHhrRGtaWHlXNkhhakE2aDRJZ01nTjQrY2tjakc0dDNMaDlrV3B5YVJZRlFXUUc4UEtUNGYraEhveCtMNU1Od0t1c0E5NnlGZkYvc0xlWHFaSFhCcnlPZGNCYnR0QTluTEU4QVM4Znhmay95RGltRi9BcTY0QzNiQm5kdzdka0c5bnhDcnFIRTRNRXZIeGtkZzlMYkFlMzBGU1dHQ1RnNWFQWVRncjBzQ1VIQ1hqNUNOM0RHY3NUOFBLUk1UREhXcE92M1d4aklnR3ZzZzU0eTFiWS82NWxuYjl4K3hWTE01eFdnRmRaQjd4bHkvQi85NnpxWWN0Mkt3WGdWZFlCYjlsQ0Qxdkc4cXdNdkJRVHN6RVhldGhTbXFrY3ZIbmNxUzY4dXhjWE1UQW5NVWpBeTBkR0Q5dW1uRm5hd3BESTVDQUJMeCtaZzlIblB0bTBsc2htUnFjcUNCbzdnSGVhNFpVM1lQYWIrb2xBR1d3QVhtVWQ4SmF0U0E5YjF6SWVxREphZ0ZkWkI3eGxLd0t2dkg4TnQ3NG5Cd2w0K2NqTWVSZWExcHA0UWM2YkZDVGc1U096dGNHeUxvZ0tlRGJUQk9tQVYxa0h2R1hMOVArcEhNKzdsODBHNEZYV0FXL1pRZzliU2pPQWw1OEFiMG96Z0plZkFHOUtNNENYbndCdlNqT0FsNThBYjBvemdKZWZBRzlLTTRDWG55Sk5aWHRLbWFZZEFiektPdUF0VzJIL2oxZnhFTUVSUVFKZVBqSzdoeHVYNzBpOWk3RU5DVUVDWGo0eUJ1WmtHNFh1Q1BBcTY0QzNiRVZHbFkxaEEvQXE2NEMzYkVVR280OWhBL0FxNjRDM2JJWDk3emZuc3QxN3FRUjRsWFhBVzdhTXRNRkNhOE9JSUFFdkg0WFRodXV2T3JxRTFvYUVJQUV2SDZHSExhVVp3RHRjM1puNy9lZTI3TU43dG55aGtHc24yUjdnVFdrRzhBNVhWMldhVk9EYXFXeVovdSsrY3U3YytjQThlNzFXNjRXYjNsdWxxL2JKaG54ZGR0Y0J2TW82NEowc3ZQSWV0a2JUOHFmbjdRbHlleTY5VWljYmd0bWoxMjhHdHdLOHl2cjB3eXZ4bVBkZis4LzlzS2xtd3hVWCtvMDNaZG9nUHk5SjZNdzFYUFhGUi9uWnRQVEY3MXN6OStXSFFFdEIvN2szRlluQ1hzU09FMlBvVTBjOVAvQndWVC9GMWJaUHQ5ZkYvNTFsZjQyREZ4OElwT1cva2FFQzNpbURkN0E1THpoZFU2L3lUODJRMEpIVGZDeXAvaTFGMlphRXpWekR0YUFxMDM1ekxXcHBYcHUzTy82a0MzSmo5YVV3YTloeFl3eDc1ejQ0MnpGeGRPV3E3UUJyT3dza3pRZkx3YTBBcjdZKzlmQzY1M0dWSWNnTHRPYWFXcWcrZDRMd21tdDRGcjU0UDlsU1Z6K0phczFiMmRsWXdic1dsMGJFZGc5NzNjUTZQd2hVdER2cTdjNGJJdVZkSHhHcURYaW5ETjZ1UTBWWFZtME9xZkpWMVphQ3l3Qzh4aHFlaWJiT0ZtSXRkWFFYdzVLN3JpSmR3QnhueDRreCtNRWRtTk52T3NaMXV1c252U2NiNityL1M1OEtnaFc5ejBvbEhrQ3FncUN4QTNnbkRxL0tqMmZ1eDhOclROT1VFVjd4dzFEY2Q5d1pjMHg0ZzlkdWZuME1lSlgxcVlmWE85bkxLczVwMXcwbENUNjh4aG9oTTVySHFLV3VNYkRHM1RndHZPSmljT0hHN1l2ZS9MeG0yckFqcTF4SE9oOU9EdFVHdkZNR3IzdDU1VjFtT1VnZHI4eTdGMnd5WlExZXNCblFLY3dEMzRmV0cyeUtxamRBY1BDQ0xRMjhzcUZCUGxERkhaMWpYTERwck1IOXptc3ZBN3pLK3RUREcyMHEyOUwvdktheUxUbk5YYWlwYkNzTW5UdHplWndsM1ZEcnI2dWF5dWFUMGc4Vlk4VEI0QU5WaktZeXA3TFZMMm5TaGp3UDlRamFBYndzNE9XbUVjY2gzRW5odmxNMDczaTFjTkhsQ1hnQmI2dzgvMlhTRWpNazhrQjNENTl1UzE2OS9HRkg5Uks3QXJ5RXdVNGp2S3BmTGUyalRqS3M3UGsvdUg1cG4zeElKT0FGdkFXcTJGRmxnQmZ3RnFod0o4WEZCWlV1eUNkYVpiQUJlQW1EQmJ6cEZmQi9iKy94eXN4ZE9WL09iaFB3SmdVSmVQbkk5OSsvV3JNQ1l5TFRDUEFTQmd0NDB5dmcvK0dkMjgzR2pld1Q1Z0JleW1BNXd6dDJRMzFCQ2crSnZKNnBsY0VWNENVTWxqVzhuNDBSRjNqSFZHWGd6ZFBoQjNnWnc1dlFTWkZHbFlHWG9qd0JMME40NjlCSlFWR2VnSmNodkRrRWVBbURCYnpwQlhnemxpZmc1UWl2TTZFLzZiVCtOT1VKZUFGdnZEL3VtMUFmQlM3WUVvTUV2RW53OXVPbVZpaFUvZ1hiSTlrN2NjMWF2SEhuV3VNeTBiVCtOT1VKZUtzQTcvSFh0a2duekVtaHNQOWQ5d2JNdFN3MkFDOWhzSldGdHl0djYybXZwWENOVE9GUlplYThEZWxVUEx4NWVoZUkzQmtOTDVHVE5HWW1rL1BLMnJkRVZRTmVHanNGdy9zdm8xVzBrOVRCbWpaSHdEdllYSXJmc0NDRnh6WnM2bnlodzIxVUdZMGR3SnMxV05QbWNIamxuR1dseXN4NXJjVTd0NitsdTluSUUrQlYxdXNPcjVwUXJGUVovdmYxdkExYm1Xd0FYbVc5NXZDV3oyNjBoKzNwNDd0WmgwVUNYbVc5NXZEcWVmTFdVcmhHcG1wMEQ5UFlBYnhaZ3pWdGptcHRLRm5tcm1tZitzNmhJSWpNQUY3dThGSS85WjFEUVJDWkFiemM0YVYrNmp1SGdpQXlBM2ladzB2KzFIY09CVUZrQnZDeWg1ZjRxZThjQ29MSURPQk42cnBPNFV4Qk1ucllVUE9PQ2hMd01vV1gvS252SEFxQ3lBemdUUmp4eGdWZXRuY1AwOWdCdkZtRE5XMXlocGZ0M2NNMGRnQnYxbUJObTV6aEhWT0FWMWtIdkdVTDhHWXNUOERMRjE3enFlOXBCSGlWZGNCYnRzSzdqanoxUFpVQXI3SU9lTXRXZU5mbVU5L1RDZkFxNjNXSHQ1dXhrU3EvWWpzcHZLZStweFBnVmRackRxOThWSEJuUG9WbmRJcnRIc1lObU1sQkF0NGhhWU42MW5WNWloMlkwK2YyVEFvYU80QTNhN0NtelZId1RyTG1qVHoxUFowQXI3SmVlM2o3emJHR3hvd3ZjMnhEK0tudjZRUjRsZlhhd3p2WlNVY2lUMzFQSjhDcnJBUGVpVTczSkJWNjZuczZBVjVsdmVid2R1ZjJKMXp6amlYQXE2elhIRjU1Ny90RWMxNnRRYVo3aHdHdlk3M3U4Sll2bzN2NGxtd2pPMTVCOTNCaWtJQ1hLN3g2aHIzQkxUU1ZKUVlKZUpuQzYzWlNvSWN0T1VqQXl4WmVkQStQQ2hMd01vWFhuWiszaS9sNUU0T3NOYnlzN3g3dVd0YjVHN2RmeVRqWkgrQlYxcWNmWG00eS9OODlxM3JZc3QxS0FYaVY5ZW1IbDNmTmE2T0hiVlNRdFlaM1hHY0tFbnJZTXBZbjRCM0RtWUlFZURPV0orQWR3NW1DQkhnemxpZmdIY09aZ2dSNE01WW40QjNEbVlJMGF0ZTlWdXVGbTg3N2s0MlcwTEt4RlBBNjFnRnYyUnF4NjU1Z3RPZHlldlQ2elppbGdOZXhEbmdIbTJzcFBLT1QwVDI4RUc3aFBkMWVGLzkzbHZXbjNvc1BZcFlDWHNjNjRNMzR3UFhjQ25jUDMycGExdUpkZjhIUmxhdmkvNEVEN2NGeTNGTEE2MWl2UGJ6OWhkVzFGSjdSeWZULzhUWExhaXk2OTdEcFJNR3RjWGZlRUNudmVuanBzMUtKeGprVUJKR1p5c0diUnFPQ1RlT2JaMlR3M1I5Tk1tM1FVdnhlVUhkVDZNVFdTVzlQTmw3NlZCQzhIbDVxbytaMXJET0RONDg3WThIYldacG96cXQxK0daVC9pb1g5KzBJcHJhcWNBRnZyUFdhdzl0L2ZuL1M4RDc5c1NCMzRhNTl1Q252cGdpbkRVb2k0VFdYQWw1bHZlYnc2bWNQWjVxaE1hL0NGMnlTM05tMzFNQWNOU0RkdkRTekZjKzRZSXUxWG5ONDdZazNsVFV1UC9IZVA3OGZiaFRUeklvS0YwMWxzZFlCNzBUaGpkN3pIdXFPVUxpS0N6WjBVc1JhQjd4bGE5U3VEM1JIOE9tMkFyZlZhbDBOTEhVRWVKVjF3RnUyL0YwLzNRc28wN1FqZ0ZkWkI3eGx5OXUxL3dCQlBFUndXSkNBZHd4bkNwTGZQL0xvanRBMWEvSEduV3VOeSsvaTd1R0VJQUh2R000VXBQQ3V1KzdrMG10WmJBQmVaYjBHOEhLK0FST1RqZ0RlNFVIeUV1Qk5hUWJ3TXE5NTNSbHpPcGd4SnpISVdzTTdaa3hGeWN4NXJjVTd0Ni9obVJUSlFRSmVydkRhZmYxTWlxMU1OZ0N2c2c1NHkxWmsxMDhmMzhXTU9VT0NCTHlNNFIxRGdGZFpCN3hseTl6MTdpdm56cDNQTnM4ZTROWFdBVy9aQ3U5NnNHbFpqYWFWcmJFQjhHcnJkWWUzazNWWVFXNkYvZStvNXdjZXJtWWJFQTk0bGZXNnc5dGVTK0VXcVl4Mlh2ZkIyV2puVFFvUzhDWVlHWHgzSzRWYnBFSVBXMG96Z0hjRXZHcFk0bG9Leitoa3dPdld2SUEzS1VqQW0yQ2svOXhXMmJWdjJQKzJPNm9NejJGTENoTHdEak5TYnQ0YjlyL2Z0Qlp1M0w2STd1SGtJQUV2VjNobFE0UHNIcjRYdjNLQ0FLK3lYbk40NVZQZkIvODB3YVl5R3c5VUdSVWs0RTB5d3VPcDcxa0ZlSlgxdXNOYnZ1SzZoNE9UbktZUjRGWFdBVy9aaXU4ZXZvRHU0YVFnQVM5WGVEdldITHFIaHdjSmVKbkNpKzVod0Rzc1NOYndvbnNZOEE0TGt2VU5tSFliTmUrb0lPc01MemVaRjJ3eTV4MXN6bVpxYXdhOHl2cjB3OHUyNXZYbUtqdHpWdnd0SUcxSUNMTFc4UDUzakZqQWUvRmNRSUEzS1VqQXl4RGVIQUs4eWpyZ0xWdUFONlVad0F0NHh5c0lHanVBRi9CR0JIaVZkY0JidGdCdlNqT0FkeFM4ZzgySkRZa2NiTTdjSHp6S05DTzZLOENyck5jZDN2YWFHcEJlb2dMdHZEUDNNM1lMdXdLOHluck40VDMrMDFMdm9sRCt1RzlFcGI5NHU5bTRjVWNKejZSSUNoTHdKc0RiZi81N2s3dVRvdHZFMDRBQTc5QWdoOFBiWEpNUHowN2hHcGtDL2cvMkhxL00zTVZ6MklZSENYZ1RhOTU5Ky9ocld5bGNJMU40UE8vMVM3aGdHeEVrNEUzS2VmOThzdkNPS2NDcnJOY2NYdG5hTUxtMFFRbno4NDRJRXZBbXdYdThVdklNcDVpZk42MFp3TXU5aHczejh3TGVJVUd5aGhjM1lBTGVZVUd5aGhjM1lBTGVZVUV5aHhmejg0NEtFdkF5aFJmejh3TGVZVUd5dlFGVENmUHpBdDZoUWZLUzRUL201eDBWWkozaDVWM3oycGlmZDFTUXRZYjNOekhpQk84WUFyektPdUF0VzRBM3BSbkFDM2pIS3dnYU80QVg4RVlFZUpWMXdGdTJBRzlLTTRDM2V2RDJXcTBYYmpydlQ3ZGJyZGE2ZUhPeUlkNjBsdDExaW9jM2pWS1lLUlplQms0RzdaUU5iMGNGdUpiQ05US1ovajhOM3diVUUrVDJISHBQdDhXYkE4bnMwZXMzZzlzVUR5K0RTbTAwdkhGOXA5bTdVbGtjczNGcjNrbmQrcTUwdkJxK0FmTjBXMWEwTzdxT1BicHlWZncvZVBHQjNSTi9BUUZlWlIzd2xud1hVR1JzUStOeThOWjNuMWRQc2g0K1dBNXRCWGlWZGNEYnlUUWtKcjlpUjVWNTB2bEJxS0xkRVI5MjNuQ1NYeEdtVktKeERnVkI1QTdnSFFsdjJSVnYvSGhlVHpyZDdiM2dwN2c5QWUzSnhrdWZDb3JYM1dXQVYxbXZQYndsWjd4Mi9KMFVuaUx3OXZ3MkJyOCtCcnpLZXUzaGJXZTZlWXhBNXBESXVkQ0FNak50NkxYVy9lOVVQaXdGZUpYMXVzTTcrTzVXQ3I4b1phUU54blJQeGdYYlFZRGRRSHNaNEZYVzZ3NXY2U212T1dQT3E0NmNtWE5DVFdXQ1hWM1hhcVNSTmhqV2llQ2w2ZXRBRDF1NGsrTG9pbHZ2S3BweHdXWllKNEtYSmxiQWE4dmFWblVQbjI0dnk3ZFM4dU9PZUwzcXJRTjRsWFhBVzdiTVhmT2M3Z253QXQ0NGYwS2Z1RTczQkhnQmI1dy9vVTljcDNzQ3ZEemdIZmZxc1NERmRsS3dtKzRKOExLQWw1dGl1NGZaVGZjRWVBRnZqR0lINXJDYjdnbndBdDRZbVVNaWFhZDc0dERnVHVRTzRPVW5jMndEN1hSUEhBcUN5QXpnNVNmRGYrTHBuamdVQkpFWndNdFBFZjlKcDN2aVVCQkVaZ0F2UDFHMDBnRmVaUjN3bGkxL1FKdDY5ckI3MlVMVTJzQ2hJSWpNQUY1KzhvY1NYNyswSHhrU21VNkFWMWtIdkdVTGFVUEc4Z1M4ZkJUdXBMaTRvTktGd1NiU2hxUWdBUzhmQmZ6Zjh4NmN2VXZWdzhhaElJak1BRjUrOHYzM3I5YXNqR01pQWEreURuakxWc0Qvd3p1M200MGJ3UWx6VWdyd0t1dUF0MnlGaDBTdWpQWFVic0NyckFQZXNoVTdKREtqQUsreURuakxGdUROV0o2QWw0L0MvbmVibjNtU3NPSVFBVjVsSGZDV0xhT2R0NG51NFJGQkFsNCtDbCt3b1hzWThBNE5rcGZRUFp5eFBBRXZId0hlak9VSmVQbkk5SjkyeGh3T0JVRmtCdkR5VTloLzZobHpPQlFFa1JuQXkwOWgvNmxuek9GUUVFUm1BQzgvaFZzYnFHZk00VkFRUkdZQUx6L0Y5ckNSelpqRG9TQ0l6QUJlZmpMZ0paNHhoME5CRUprQnZQd1U5cDk2eGh3T0JVRmtCdkR5VTloL3pKZ0RlSWNHeVV1Ry8weG56S0daODZ4ZThGSk16TVpjRWY5WnpwakRnSXZLd1p2SG5hckNPNFlBTHhjbnFkeXBLTHl5ZTNqeGJqWWJnSmVMazFUdVZCSmV0M3Y0QXJQdVlRWmNBRjUrTXB2SzVMT0hEemU1ZFE4ejRBTHc4bE5DSndXejdtRUdYQUJlZnFwRzl6QURMZ0F2UHhscEEycmVVVUVDWGo0eUw5aGsvNFQ0bitrT2VNREx4VWtxZDZvSTcvSEZjNVoxNW16V080Z0JMNldUTkwySnRZUTNvQVhBR3hOazRmRFNtS2tmdkdNSzhGSTZTV01HOEtZVTRLVjBrc1pNTGVIbGVmY3dFUmVBTjZXZFNzTEw5ZTVoSWk0QWIwbzdsWVNYNjkzRFJGd0EzcFIycWdndjI3dUhpYmdBdkNudFZCRmVkQThEM3VGQjhsTEN3SnpwaEpmaXpwamtZR2w2RndCdmVwbERJbm5lUFV3RTcyOUdLd2U4ZWF5VHgxcERlTG5lUFF4NEFXK01EUCtaM2owTWVBRnZqTUwrUDNveTFYY1BBOTRwaGplbWxhSFhhcjF3TS9JaHRCVHc1cmRPSGl2Z0ZaUUtSbnN1cDk2SDBGTEFTMkNkUE5iNndSdDVsTlhwOXJyNHY3TWMvaEJhYWdOZUF1dmtzZFlQM3NpanJJNnVYQlgvRDE1OEVQb1FXbW9EWGdMcjVMSFdEOTdJbzZ5T1hwZTVRYytCMS8wUVhQcXNWS0p4cXJzQ2lOci84NWdwclpPQ3hrdzk1eW9MU1NlMlRucnJmUWd0dFNzVGFqNk5oSGVhVkpFZ0FXOUtBVjUrQ3NLN2UvM1ZTK0ZweWthbkRWSVZDVFdmQUM4LytmREtnZWlXTVE0OTV3WGJOQW53OHBNUGIwZk9VMlpNVTVhenFXeWFCSGo1eVlQWEdZaHVqRVBQMTBreFRRSzgvT1RCNi9TdW1aMXNCN29qK0hSNzJmOFFlS05Va1ZEekNmRHkweWg0MDZnaW9lWVQ0T1Vud0p0U2dKZWZBRzlLQVY1K0NzSjdkMjl2NzdGK2VUSnNHMU1WQ1RXZkFDOC9CZUFOZG5yVDNJQTVUUUs4L09RM2xUMjZFOUM3SlBNMlRKTUFMeitSVExSWEM5VXhXT2FpZ0RlRHFJNEtrWjFpQzRtWmt4VWhNb01BYjNGaTVpVGd6U2xtQlFGNEs2MlM0WVVnT2dGZXFMSUN2RkJsQlhpaHlncndRcFVWNElVcUs4QUxWVmFBRjZxc0FDOVVXWlVPNzhsR3k3dG5Qb2VPcmdUdm9odFB2LzFVdWROYUhyM3FtS0lKbGlMV0VvSXRYMlhEZTNSbCtlUWZmcHJiek1uRyt1bDJ6aEk5dXZMU3A4S09mZEI2NmRQY0RpWHNnU0pZaWxoTENIWUNLaHZlSFpwZmZrK2EyY2xab2ljYkwvMUsyaEdNa1RnVkVVMndKTEVXSCt3RVZESzhKeHR5c2gxN0o5L0o5SFM3dGE3TTVLWlhuMFY3K2MvSzhlWUpncVdLdGVoZ0o2R1M0ZFh6UHpqVG5vMXY1ZGNiR29qODlDbzdEbVhVSWdtV0xOYUNnNTJFeWs0YmVpMTU2SExDcTA2Q0tuWDc5Zi9sdGJOTTRVNkNhSUtsaXJYZ1lDZWc4dUNWbDdyaUJMZ2ovamxWVWo1ck5CY2Vzam9pY0NkcWxqQllxbGlMQ25aaUtnM2VveXZyb2lZU3BYRFF5dGRlNHpRYzVTeFJoNjdBRzBwUkJVc1RhOEhCVGs2bHdTdXZ2SHV0Zjh4ZGhRZ3VkTU9SUGdtT2IwWFRwVnFpOHZvVUVWR3dOTEVXSGV6a1ZCYThwOXRYWlFxb3AvWWRVN0tkWFUydmVwQzcwWjdxcHhRdmdtQUpZeTA0MkFtcVBIaVg1ZVdMbnRwM1BNbDJkdnZrNzIrS1M0NS95OUZvZi9TdEJ5US9wU0hLSHl4UnJHVUVPMEVWRHE5STIxcXlqeFh2KzFRQUFBTVJTVVJCVkxUWGtwZmVzanpHMVc5L0pVNTk0aFFvVDMyOXNWUEpveXQvK0ZPS24xS0NjYUpnYVdJdE50akpxMmg0VlJYU2s2YytnaXR2bmJnZFNJdmpGNmR1cWMvOVU0bzNUaGNzUWF6RkJzdEFCY1BySEw2VERWR2dlWnNaYkYyaWtnbDVKc3pqRDFtTFhaeHhvbUJ6eDFwc3NCeFVMTHplNGFOcXFwUWxtb01MeDU4RGdoYTdST05rd2VhTXRkaGdXYWhRZUU4MldtNnRRZFdqM2hPRnNETnVXNlhqejBFaFY5NzB3ZWFLdGRoZ2VhalltdmQwMnkxUXNoNzFYaXVQb1IyeDlVRXVDOG1pRHpaZnJJVUd5MElGNTd4ZWdaSzFqdWZNM1haYWJ4UlduT1RCNXMxVGl3eVdnNHB1YlhBTDlJRGk5Z25aZEorM3VYS253T0lrRFpZZzFrS0RaYURDMjNsMWdlWThBVHFTWGZPNTd3UW9ubDZTWUVsaW5YSjZpKzloa3dYYW94b09ja0JncUdoNnFZS2xpSFc2NlMyaGUxZ1VLSytoVEFYVFc1OWdKNjB5eGphdzY1ak1lUmZTVU5VcTJBa0w4elpBbFJYZ2hTb3J3QXRWVm9BWHFxd0FMMVJaQVY2b3NnSzhVR1VGZUtIS0N2QkcxVjc0Z1g1dStPQi9MaTRscmZSVWZMMDVsK1g1NGhDMUFHOVViY3RhVTIrNmxwVUU3OCsvZUIvd1RscUFONnAyNCt5OGZuT21tUVJ2ZXdid1RseUFONnIyelBjRm1yWjl2UEoxd010WmdEZXE5c3gvTk5mRWExZThTbmdQcnpVdGEvR2VTbkovc1dvMXZpSGVXSlkxTHo1K3Npay9RcE1SNEkycVBmT1RGUWx0ZSs0WEV0NitRRmRJVmJYcW5iWGt3anU3cWo1TzJ1RzZDdkJHSlZLQ3RrZ0lqbGVXK2hMZXRuVmgzeDdjc3VZbHZQUDdka2U4YzlJR2ErNmUvWE5yZnRJTzExV0FOeW9CWnJleFpZcy9DZS94aXNwc0I1c3o5K1dmclJkb2VNVmE3dmRRK1FLOFVRa3dSYTByc29aOUNXL2Z1V2pyTkxiMEZacjY3MSt3NGJKdFlnSzhVYlZsSFR2M3l4VU5MdUJsSzhBYmxRU3owL2poYzF0MkpHMEF2SndFZUtPU1lQYWI1OVIvNDRMTmgxZWt1NEIzd2dLOFVUa3RDZk8yaHRkcEtndlQydEh0dklCM2tnSzhVVWw0UlgyNzVzQnJIMTRUNkY1NFlnZmhQVjYxNWo0QnZKTVY0SVVxSzhBTFZWYUFGNnFzQUM5VVdRRmVxTElDdkZCbEJYaWh5Z3J3UXBVVjRJVXFLOEFMVlZhQUY2cXMvaCtqdmFrTlpaL2tCd0FBQUFCSlJVNUVya0pnZ2c9PVwiIC8+XG5cbjwhLS0gcm5iLXBsb3QtZW5kIC0tPlxuIn0= -->


<!-- rnb-plot-begin -->

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAAGwCAMAAAB8TkaXAAAB2lBMVEUAAAAAADoAAGYAOjoAOmYAOpAAZpAAZrYIUZwZGT8ZGWIZP4EZYp8aGhoxgr0zMzM6AAA6ADo6AGY6OgA6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kLY6kNs/GRk/GT8/GWI/P4E/gb1NTU1NTW5NTY5NbqtNjo5NjshiGRliGT9iP4FiYmJin9lmAABmADpmAGZmOgBmOjpmOmZmOpBmZjpmZmZmZpBmkGZmkJBmkLZmkNtmtpBmtrZmtttmtv9rrtZuTU1uTW5uTY5ubm5uq+SBPxmBPz+BP2KBn4GBvZ+BvdmOTU2OTW6Ojo6Oq+SOyP+QOgCQOjqQOmaQZgCQZjqQZmaQkDqQkGaQkLaQtmaQtpCQtraQttuQ29uQ2/+eyuGfYhmfn2Kf2dmrbk2r5OSr5P+2ZgC2Zjq2kDq2kGa2tpC2tra2ttu225C227a229u22/+2/7a2/9u2//+9gT+92dnG2+/Ijk3IyP/I///Zn2LZvYHZ2Z/Z2b3Z2dnbkDrbkGbbkJDbtmbbtpDbtrbbttvb25Db27bb29vb2//b/7bb/9vb///kq27kyI7k5Mjk5P/k///v8///tmb/yI7/25D/27b/29v/5Kv/5OT//7b//8j//9v//+T///9B9NzfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAgAElEQVR4nO2djXvb1nXGQVmq2rVZmNqK5anryiTT1kWdvCVe3TWa06j7qLZZXe2mq1Mti2Z6tbPZnZOpTpqws7xabqR2KUlZlSj8r7sf+LwASIA4AA+I930eiSQIHJyD++PFwb0XF5YNQRWVNWkHIGhcAV6osgK8UGUFeKHKCvBClRXghSorwAtVVoAXqqxI4O1YSrNvZdqq/2f37cHm3H6qlW9Z1rxc83hlPmGNwWbSN0MkN1I+ZHJmbLUbW/KlY6kdif19Et6l9CLJ0x+ftawzl1M5KAMZEcyusDZ7T747XLWshXvhZbZxoIev3Valv5TGM1pRwmtZa5m2mknPS1cYVwezKHizODO+uvoItS0FsYjF2KX0IslRfYRTeTga3q4yJr04XpHv5H79ZdrH+ZRrO65VFl59zB+mO7TGVqnUdX8XBcCb2Znxpb0/Xvn6iizqbuTHnuxF15oTtdzhZqr6YeSvcLDZeMse/Lvks2P93r54txRcZqv6aD7l2v1mGp+KECW8dnvmvqChY83cU6cXeVI5XlnqNq3ZLfm1u0yt02jKX6s+zP4Xc7fPWo1veIbdL9rOz10Vv7R3L/it+NmIRXcFhxqH4xW3FngY3bW/B3cjdfYe7czgmqhoXkuw6getzqn+umHpPXQbP1K/mY48XKqO1DtSVdiSf2p2zapDrGtETf9DccaWjvWbSw+b4o04Iov7gUPt1rxGtI3L7k9VbGgHK2j531+mVvimX0uMWLvrVtalix7eM01RAXebzknleOV80zm9eMvUOrOrHi+BL8LZh/dFEN4zEXs6bZldnXfK1juaXSu6a28P3kZheJOccT6uxVtVQfeNTd0wzCPVmdt3sxT95+zIgbdvmHVC8U/LHdexflMe3MYPmyqp8g91xLK3TejkJE87zpms7Vb5+lQklkZOcYlrd2b+2f01lyzatEGSII+y+P+avi4RSdL8vjq9+Mv0OrZfgIEvxFVZxz3E/hfBtEGfuOZD+xCnMHFGnXcOa9spcHFq2xJOLdlxe/A3CuW8ic70mxfEZV1zPsGqClpWtrtiFW/diOQpduCcIuQJwtmluyPthWvGOU5at6zG+RtPdFiyNu6r/QgPHmrgw4fagzcSbbDYFP9qFx33995RB7otrRnuJ67dHuN6h0akF2zqRy/xcQpOXFwfryiSBFT+Mr2Ox4v5hXfY/C+C8OoTV9CePqTqswuFs/2Sacjfg79RCN4hzpz5+t2hVt2Sla4560YkfZMAy1fpq0bM25H0wjfjHCdHj681vVxk7/b1pjWvPVBHRNrxD7UPr2tZV9zh39NDnbCGcFTL1KnLhDdxbZX9Zr3eoRElvDpPk0E4OXxXwquOQUci5i5z8iqfl/AXAz8zc78IwrsUsae/VJupgnLrBe9KIm4P/kYGvAnO6Apm8V6y1a7/E3bX9Y+OW4WKOq3rnB2CqYN3Br4fMBO57hrsXpSGdF5hOT9AfYT9urKjNwxb1rgFr2kHtyxdUgEcg8v0j8l1fcjabmATyHxJc1574vDKesfNGojhtXdXVeadBl53XX10gvB2Hf/E/trzdkZ4baeGtc7/4N1fruSC101JnOOp0i13mX8idV0ftrbLwBTBG04bwqf5CLzhLwLwxqUN83Z82uBcrFnf9NoaYk/w7h78jRLTBgNeocffs9YSrRpNRnLd6KGSl/FL/msMvL6ZALxOSuDkX2u2m/OG4XUPdRReM20QOfBrgX2o/96yQBaYYm3neLRnymhrDKsYeEMXbJELLBde77o4/IXHS8IF25IdvWB7TX7UWJ/zjrm6tOqvxO/B30jDO8qZrohD7FiSmmhVJn+HAh5v3eihGmyef27LfzXhVV64ZoI1b1tlIYOHTfX72pfNaU57VQBe/1Cb8JoXbP5Jvi03uiXZDp/4gznv0LXVBabXPlyqioHXDjSVqaYt1SfjNwFpeGNap8KVnd8YFoD3fMSePtPKVi9l1Xem67VuxezB20jDO8oZp9lJ/ZDirbon/KXAujHHyvGvbbmVWBBeuXXAjG9Bd22F2vCi8LqHOgqv0VTmZM1yXa/PLLBM79CjccTa4Z65MlUQvHbf66SQnQr62qXvN/+rYQqr1rzu2w9/EThTu1+Ecl5h7/mQPZVizv6X3ix0RS1b5l+L7lrvwd1InwVHOqM6Hi7sJ1vVn8+8Flo3oq4DUNc5UYQQk17se2ZCOa8a29BQB1L1jbylEggj53UOdQy8yum/dIF0EwNZbm5PS3CZHYJ31NrS3+fv2eWr6FFlyd25BSna51oXjT7UftfjdGja4D1cnUB7Iw8NO9T95mdEFt6esh/2dMErU7LpqlwyaNihHpaFV1fTBa8oowsl7o6Xhh7qIVl4dYU7KaDKCvBClRXghSorwAtVVoAXqqwAL1RZUcD7bC1Ux2CZiwTej2ugZ+sYLHMB3pQCvPwEeFMK8PIT4E0pwMtPgDelAC8/Ad6UArz8BHhTCvDyE+BNKcDLT1WB92d//B35/4+eeeZ33vn4wy+/Iz6o/x8888wzn3+/BAdKg/fDL4mQnvmKfvncdz780ssflx0r4KXVB3/yFcmuKMj3Pv++D+97AuWP3y6jRMuDVwXnvgiWZYjlxgp4SfXRX//dV9/XBSrqYA9eXR9/9O2Xi/dgYvB++V+/UHasgJdUH/7B+2+/LEpO1zsevB+UcxaVmhy874jIy40V8JLqva98/IGogGTa97nvOGmhyH7VsnJUbs77BSdGlSL97Kvyf4mxAl5KffRtxap6/+Hv+2mDqJAL37ejCda84qdbbqyAl1Kq4N5+WVc+b79cr5z3HZHx/y1y3hhVA973ZIl98AXV2hC8YKtDa4N8VU0OaG0wVQl4P/obWZCCWtnOK3PeqW7ndeDVeb1zllHgop3XUCXg5SD0sPET4E0pwMtPgDelAC8/Ad6UArz8BHhTCvDyE+BNKcDLT5i3Ia3qGCxzkcBLYIO9njVep1oVCRLwphTg5SfAm1KAl58Ab0oBXn6KgXf3ovvI55SqSKj5BHj5KQzvQD17NOvjDCsSaj4BXn4Kw9u25j7ZtJa62R4kW5FQ8wnw8lMIXvlM6H5TPqo90yO8KxJqPgFefgrBK6HtWjP3Q/AefeuB+7bXar1wM/RGqSKh5hPg5acIvB2RMvSb/qMSTzZedOHtCWDln/9GqyKh5hPg5Scz511oWmvixct5RR3rwnu6vS7+7yz7bxxVJNR8Arz8ZLY2WNYFUQHPullDr7Xec+E9unJV/D948YH3xlmpIqHmE+DlJ7Od96nIFwZ7wSU+vK/f1B+9N84aFQk1nwAvP43uYfMg1Vmu+O+9sZ1BVonG0yiNkzR2cpkZCS8HJ6mDZa6I/4/evPTJ/wYXDIdXKrk8PztaqQrid0crDRd53BkN71+NVtFOBu3kOWbVhPdh07JmfrIyF3i2fY60gUVBELkDePkp7H/Xmv3PlZn7bWvJX5bjgo1FQRC5A3j5KdLDJtt6g+28PrzZm8pYFASRO4CXnyKdFO6ft7A3ficFi4Igcgfw8lNKeE+3ZT174PYKH6TrHmZREETuAF5+MnvY1vT4BppRZSwKgsgdwMtPYf/7zcb5ZuMvmkTjeVkUBJE7gJefDP/7q7LtenYrk43iOymI4KVoty8cXg7HrJLwPnpiDx7ffZLRRnJ50kBHBi9FeRYOL4djVkV4Mw5CdwV4lXXAW7YAb8byBLx8ZPSwNT+TNWewAa9jHfCWrXDNe7HpXBHQ3MPGoiCIzABefgp3D19/1dGl/aQNYgR4lXXAW7YKnTGHRUEQmQG8/AR4M5Yn4OUj0//dV86dO/9WNhuAV1kHvGUr7L+8AbMhLtrmsqS8gFdbB7xlK+x/x5q9Z9uHq8HB6KMFeJV1wFu2IoPR5WtoMPpoAV5lHfCWrdgeNqq5ylgUBJEZwMtPBrxuzQt4k4IEvHxkDkZXyW6HajA6h4IgMgN4+ckcjG4t3Lh9kWpyaRYFQWQG8PKT4f+hHox+L5MNwKusA96yFfF/sLeXqZHXBryOdcBbttA9nLE8AS8fxfk/yDimF/Aq64C3bBndw7dkG9nxCrqHE4MEvHxkdg9LbAe30FSWGCTg5aPYTgr0sCUHCXj5CN3DGcsT8PKRMTDHWpOv3WxjIgGvsg54y1bY/65lnb9x+xVLM5xWgFdZB7xly/B/96zqYct2KwXgVdYBb9lCD1vG8qwMvBQTszEXethSmqkcvHncqS68uxcXMTAnMUjAy0dGD9umnFnawpDI5CABLx+Zg9HnPtm0lshmRqcqCBo7gHea4ZU3YPab+olAGWwAXmUd8JatSA9b1zIeqDJagFdZB7xlKwKvvH8Nt74nBwl4+cjMeRea1pp4Qc6bFCTg5SOztcGyLogKeDbTBOmAV1kHvGXL9P+pHM+7l80G4FXWAW/ZQg9bSjOAl58Ab0ozgJefAG9KM4CXnwBvSjOAl58Ab0ozgJefAG9KM4CXnyJNZXtKmaYdAbzKOuAtW2H/j1fxEMERQQJePjK7hxuX70i9i7ENCUECXj4yBuZkG4XuCPAq64C3bEVGlY1hA/Aq64C3bEUGo49hA/Aq64C3bIX97zfnst17qQR4lXXAW7aMtMFCa8OIIAEvH4XThuuvOrqE1oaEIAEvH6GHLaUZwDtc3Zn7/ee27MN7tnyhkGsn2R7gTWkG8A5XV2WaVODaqWyZ/u++cu7c+cA8e71W64Wb3lulq/bJhnxddtcBvMo64J0svPIetkbT8qfn7Qlyey69Uicbgtmj128GtwK8yvr0wyvxmPdf+8/9sKlmwxUX+o03ZdogPy9J6Mw1XPXFR/nZtPTF71sz9+WHQEtB/7k3FYnCXsSOE2PoU0c9P/BwVT/F1bZPt9fF/51lf42DFx8IpOW/kaEC3imDd7A5LzhdU6/yT82Q0JHTfCyp/i1F2ZaEzVzDtaAq035zLWppXpu3O/6kC3Jj9aUwa9hxYwx75z442zFxdOWq7QBrOwskzQfLwa0Ar7Y+9fC653GVIcgLtOaaWqg+d4Lwmmt4Fr54P9lSVz+Jas1b2dlYwbsWl0bEdg973cQ6PwhUtDvq7c4bIuVdHxGqDXinDN6uQ0VXVm0OqfJV1ZaCywC8xhqeibbOFmItdXQXw5K7riJdwBxnx4kx+MEdmNNvOsZ1uusnvScb6+r/S58KghW9z0olHkCqgqCxA3gnDq/Kj2fux8NrTNOUEV7xw1Dcd9wZc0x4g9dufn0MeJX1qYfXO9nLKs5p1w0lCT68xhohM5rHqKWuMbDG3TgtvOJicOHG7Yve/Lxm2rAjq1xHOh9ODtUGvFMGr3t55V1mOUgdr8y7F2wyZQ1esBnQKcwD34fWG2yKqjdAcPCCLQ28sqFBPlDFHZ1jXLDprMH9zmsvA7zK+tTDG20q29L/vKayLTnNXaipbCsMnTtzeZwl3VDrr6uayuaT0g8VY8TB4ANVjKYyp7LVL2nShjwP9QjaAbws4OWmEcch3EnhvlM073i1cNHlCXgBb6w8/2XSEjMk8kB3D59uS169/GFH9RK7AryEwU4jvKpfLe2jTjKs7Pk/uH5pn3xIJOAFvAWq2FFlgBfwFqhwJ8XFBZUuyCdaZbABeAmDBbzpFfB/b+/xysxdOV/ObhPwJgUJePnI99+/WrMCYyLTCPASBgt40yvg/+Gd283GjewT5gBeymA5wzt2Q31BCg+JvJ6plcEV4CUMljW8n40RF3jHVGXgzdPhB3gZw5vQSZFGlYGXojwBL0N469BJQVGegJchvDkEeAmDBbzpBXgzlifg5QivM6E/6bT+NOUJeAFvvD/um1AfBS7YEoMEvEnw9uOmVihU/gXbI9k7cc1avHHnWuMy0bT+NOUJeKsA7/HXtkgnzEmhsP9d9wbMtSw2AC9hsJWFtytv62mvpXCNTOFRZea8DelUPLx5eheI3BkNL5GTNGYmk/PK2rdEVQNeGjsFw/svo1W0k9TBmjZHwDvYXIrfsCCFxzZs6nyhw21UGY0dwJs1WNPmcHjlnGWlysx5rcU7t6+lu9nIE+BV1usOr5pQrFQZ/vf1vA1bmWwAXmW95vCWz260h+3p47tZh0UCXmW95vDqefLWUrhGpmp0D9PYAbxZgzVtjmptKFnmrmmf+s6hIIjMAF7u8FI/9Z1DQRCZAbzc4aV+6juHgiAyA3iZw0v+1HcOBUFkBvCyh5f4qe8cCoLIDOBN6rpO4UxBMnrYUPOOChLwMoWX/KnvHAqCyAzgTRjxxgVetncP09gBvFmDNW1yhpft3cM0dgBv1mBNm5zhHVOAV1kHvGUL8GYsT8DLF17zqe9pBHiVdcBbtsK7jjz1PZUAr7IOeMtWeNfmU9/TCfAq63WHt5uxkSq/YjspvKe+pxPgVdZrDq98VHBnPoVndIrtHsYNmMlBAt4haYN61nV5ih2Y0+f2TAoaO4A3a7CmzVHwTrLmjTz1PZ0Ar7Jee3j7zbGGxowvc2xD+Knv6QR4lfXawzvZSUciT31PJ8CrrAPeiU73JBV66ns6AV5lvebwduf2J1zzjiXAq6zXHF557/tEc16tQaZ7hwGvY73u8JYvo3v4lmwjO15B93BikICXK7x6hr3BLTSVJQYJeJnC63ZSoIctOUjAyxZedA+PChLwMoXXnZ+3i/l5E4OsNbys7x7uWtb5G7dfyTjZH+BV1qcfXm4y/N89q3rYst1KAXiV9emHl3fNa6OHbVSQtYZ3XGcKEnrYMpYn4B3DmYIEeDOWJ+Adw5mCBHgzlifgHcOZggR4M5Yn4B3DmYI0ate9VuuFm877k42W0LKxFPA61gFv2Rqx655gtOdyevT6zZilgNexDngHm2spPKOT0T28EG7hPd1eF/93lvWn3osPYpYCXsc64M34wPXcCncP32pa1uJdf8HRlavi/4ED7cFy3FLA61ivPbz9hdW1FJ7RyfT/8TXLaiy697DpRMGtcXfeECnvenjps1KJxjkUBJGZysGbRqOCTeObZ2Tw3R9NMm3QUvxeUHdT6MTWSW9PNl76VBC8Hl5qo+Z1rDODN487Y8HbWZpozqt1+GZT/ioX9+0IpraqcAFvrPWaw9t/fn/S8D79sSB34a59uCnvpginDUoi4TWXAl5lvebw6mcPZ5qhMa/CF2yS3Nm31MAcNSDdvDSzFc+4YIu1XnN47Yk3lTUuP/HeP78fbhTTzIoKF01lsdYB70Thjd7zHuqOULiKCzZ0UsRaB7xla9SuD3RH8Om2ArfVal0NLHUEeJV1wFu2/F0/3Qso07QjgFdZB7xly9u1/wBBPERwWJCAdwxnCpLfP/LojtA1a/HGnWuNy+/i7uGEIAHvGM4UpPCuu+7k0mtZbABeZb0G8HK+AROTjgDe4UHyEuBNaQbwMq953RlzOpgxJzHIWsM7ZkxFycx5rcU7t6/hmRTJQQJervDaff1Miq1MNgCvsg54y1Zk108f38WMOUOCBLyM4R1DgFdZB7xly9z17ivnzp3PNs8e4NXWAW/ZCu96sGlZjaaVrbEB8GrrdYe3k3VYQW6F/e+o5wcermYbEA94lfW6w9teS+EWqYx2XvfB2WjnTQoS8CYYGXx3K4VbpEIPW0ozgHcEvGpY4loKz+hkwOvWvIA3KUjAm2Ck/9xW2bVv2P+2O6oMz2FLChLwDjNSbt4b9r/ftBZu3L6I7uHkIAEvV3hlQ4PsHr4Xv3KCAK+yXnN45VPfB/80waYyGw9UGRUk4E0ywuOp71kFeJX1usNbvuK6h4OTnKYR4FXWAW/Ziu8evoDu4aQgAS9XeDvWHLqHhwcJeJnCi+5hwDssSNbwonsY8A4LkvUNmHYbNe+oIOsMLzeZF2wy5x1szmZqawa8yvr0w8u25vXmKjtzVvwtIG1ICLLW8P53jFjAe/FcQIA3KUjAyxDeHAK8yjrgLVuAN6UZwAt4xysIGjuAF/BGBHiVdcBbtgBvSjOAdxS8g82JDYkcbM7cHzzKNCO6K8CrrNcd3vaaGpBeogLtvDP3M3YLuwK8ynrN4T3+01LvolD+uG9Epb94u9m4cUcJz6RIChLwJsDbf/57k7uTotvE04AA79Agh8PbXJMPz07hGpkC/g/2Hq/M3MVz2IYHCXgTa959+/hrWylcI1N4PO/1S7hgGxEk4E3Kef98svCOKcCrrNccXtnaMLm0QQnz844IEvAmwXu8UvIMp5ifN60ZwMu9hw3z8wLeIUGyhhc3YALeYUGyhhc3YALeYUEyhxfz844KEvAyhRfz8wLeYUGyvQFTCfPzAt6hQfKS4T/m5x0VZJ3h5V3z2pifd1SQtYb3NzHiBO8YArzKOuAtW4A3pRnAC3jHKwgaO4AX8EYEeJV1wFu2AG9KM4C3evD2Wq0XbjrvT7dbrda6eHOyId60lt11ioc3jVKYKRZeBk4G7ZQNb0cFuJbCNTKZ/j8N3wbUE+T2HHpPt8WbA8ns0es3g9sUDy+DSm00vHF9p9m7Ulkcs3Fr3knd+q50vBq+AfN0W1a0O7qOPbpyVfw/ePGB3RN/AQFeZR3wlnwXUGRsQ+Ny8NZ3n1dPsh4+WA5tBXiVdcDbyTQkJr9iR5V50vlBqKLdER923nCSXxGmVKJxDgVB5A7gHQlv2RVv/HheTzrd7b3gp7g9Ae3JxkufCorX3WWAV1mvPbwlZ7x2/J0UniLw9vw2Br8+BrzKeu3hbWe6eYxA5pDIudCAMjNt6LXW/e9UPiwFeJX1usM7+O5WCr8oZaQNxnRPxgXbQYDdQHsZ4FXW6w5v6SmvOWPOq46cmXNCTWWCXV3XaqSRNhjWieCl6etAD1u4k+LoilvvKppxwWZYJ4KXJlbAa8vaVnUPn24vy7dS8uOOeL3qrQN4lXXAW7bMXfOc7gnwAt44f0KfuE73BHgBb5w/oU9cp3sCvDzgHffqsSDFdlKwm+4J8LKAl5tiu4fZTfcEeAFvjGIH5rCb7gnwAt4YmUMiaad74tDgTuQO4OUnc2wD7XRPHAqCyAzg5SfDf+LpnjgUBJEZwMtPEf9Jp3viUBBEZgAvP1G00gFeZR3wli1/QJt69rB72ULU2sChIIjMAF5+8ocSX7+0HxkSmU6AV1kHvGULaUPG8gS8fBTupLi4oNKFwSbShqQgAS8fBfzf8x6cvUvVw8ahIIjMAF5+8v33r9asjGMiAa+yDnjLVsD/wzu3m40bwQlzUgrwKuuAt2yFh0SujPXUbsCrrAPeshU7JDKjAK+yDnjLFuDNWJ6Al4/C/nebn3mSsOIQAV5lHfCWLaOdt4nu4RFBAl4+Cl+woXsY8A4NkpfQPZyxPAEvHwHejOUJePnI9J92xhwOBUFkBvDyU9h/6hlzOBQEkRnAy09h/6lnzOFQEERmAC8/hVsbqGfM4VAQRGYALz/F9rCRzZjDoSCIzABefjLgJZ4xh0NBEJkBvPwU9p96xhwOBUFkBvDyU9h/zJgDeIcGyUuG/0xnzKGZ86xe8FJMzMZcEf9ZzpjDgIvKwZvHnarCO4YALxcnqdypKLyye3jxbjYbgJeLk1TuVBJet3v4ArPuYQZcAF5+MpvK5LOHDze5dQ8z4ALw8lNCJwWz7mEGXABefqpG9zADLgAvPxlpA2reUUECXj4yL9hk/4T4n+kOeMDLxUkqd6oI7/HFc5Z15mzWO4gBL6WTNL2JtYQ3oAXAGxNk4fDSmKkfvGMK8FI6SWMG8KYU4KV0ksZMLeHlefcwEReAN6WdSsLL9e5hIi4Ab0o7lYSX693DRFwA3pR2qggv27uHibgAvCntVBFedA8D3uFB8lLCwJzphJfizpjkYGl6FwBveplDInnePUwE729GKwe8eayTx1pDeLnePQx4AW+MDP+Z3j0MeAFvjML+P3oy1XcPA94phjemlaHXar1wM/IhtBTw5rdOHivgFZQKRnsup96H0FLAS2CdPNb6wRt5lNXp9rr4v7Mc/hBaagNeAuvksdYP3sijrI6uXBX/D158EPoQWmoDXgLr5LHWD97Io6yOXpe5Qc+B1/0QXPqsVKJxqrsCiNr/85gprZOCxkw95yoLSSe2TnrrfQgttSsTaj6NhHeaVJEgAW9KAV5+CsK7e/3VS+FpykanDVIVCTWfAC8/+fDKgeiWMQ495wXbNAnw8pMPb0fOU2ZMU5azqWyaBHj5yYPXGYhujEPP10kxTQK8/OTB6/SumZ1sB7oj+HR72f8QeKNUkVDzCfDy0yh406gioeYT4OUnwJtSgJefAG9KAV5+CsJ7d29v77F+eTJsG1MVCTWfAC8/BeANdnrT3IA5TQK8/OQ3lT26E9C7JPM2TJMALz+RTLRXC9UxWOaigDeDqI4KkZ1iC4mZkxUhMoMAb3Fi5iTgzSlmBQF4K62S4YUgOgFeqLICvFBlBXihygrwQpUV4IUqK8ALVVaAF6qsAC9UWZUO78lGy7tnPoeOrgTvohtPv/1UudNaHr3qmKIJliLWEoItX2XDe3Rl+eQffprbzMnG+ul2zhI9uvLSp8KOfdB66dPcDiXsgSJYilhLCHYCKhveHZpffk+a2clZoicbL/1K2hGMkTgVEU2wJLEWH+wEVDK8Jxtysh17J9/J9HS7ta7M5KZXn0V7+c/K8eYJgqWKtehgJ6GS4dXzPzjTno1v5dcbGoj89Co7DmXUIgmWLNaCg52Eyk4bei156HLCq06CKnX79f/ltbNM4U6CaIKlirXgYCeg8uCVl7riBLgj/jlVUj5rNBcesjoicCdqljBYqliLCnZiKg3eoyvroiYSpXDQytde4zQc5SxRh67AG0pRBUsTa8HBTk6lwSuvvHutf8xdhQgudMORPgmOb0XTpVqi8voUEVGwNLEWHezkVBa8p9tXZQqop/YdU7KdXU2vepC70Z7qpxQvgmAJYy042AmqPHiX5eWLntp3PMl2dvvk72+KS45/y9Fof/StByQ/pSHKHyxRrGUEO0EVDq9I21qyjxXv+1QAAAMRSURBVLTXkpfesjzG1W9/JU594hQoT329sVPJoyt/+FOKn1KCcaJgaWItNtjJq2h4VRXSk6c+gitvnbgdSIvjF6duqc/9U4o3ThcsQazFBstABcPrHL6TDVGgeZsZbF2ikgl5JszjD1mLXZxxomBzx1pssBxULLze4aNqqpQlmoMLx58Dgha7RONkweaMtdhgWahQeE82Wm6tQdWj3hOFsDNuW6Xjz0EhV970weaKtdhgeajYmvd02y1Qsh71XiuPoR2x9UEuC8miDzZfrIUGy0IF57xegZK1jufM3XZabxRWnOTB5s1TiwyWg4pubXAL9IDi9gnZdJ+3uXKnwOIkDZYg1kKDZaDC23l1geY8ATqSXfO57wQonl6SYElinXJ6i+9hkwXaoxoOckBgqGh6qYKliHW66S2he1gUKK+hTAXTW59gJ60yxjaw65jMeRfSUNUq2AkL8zZAlRXghSorwAtVVoAXqqwAL1RZAV6osgK8UGUFeKHKCvBG1V74gX5u+OB/Li4lrfRUfL05l+X54hC1AG9UbctaU2+6lpUE78+/eB/wTlqAN6p24+y8fnOmmQRvewbwTlyAN6r2zPcFmrZ9vPJ1wMtZgDeq9sx/NNfEa1e8SngPrzUta/GeSnJ/sWo1viHeWJY1Lz5+sik/QpMR4I2qPfOTFQlte+4XEt6+QFdIVbXqnbXkwju7qj5O2uG6CvBGJVKCtkgIjleW+hLetnVh3x7csuYlvPP7dke8c9IGa+6e/XNrftIO11WANyoBZrexZYs/Ce/xispsB5sz9+WfrRdoeMVa7vdQ+QK8UQkwRa0rsoZ9CW/fuWjrNLb0FZr671+w4bJtYgK8UbVlHTv3yxUNLuBlK8AblQSz0/jhc1t2JG0AvJwEeKOSYPab59R/44LNh1eku4B3wgK8UTktCfO2htdpKgvT2tHtvIB3kgK8UUl4RX275sBrH14T6F54YgfhPV615j4BvJMV4IUqK8ALVVaAF6qsAC9UWQFeqLICvFBlBXihygrwQpUV4IUqK8ALVVaAF6qs/h+jvakNZZ/kBwAAAABJRU5ErkJggg==" />

<!-- rnb-plot-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJeUJRY205d2IzSjBhVzl1SUhCbGNpQnRiMjUwYUNCdlppQnBiblJsYm5OcGRIa2djMk52Y21WeklHRjBJSFJvY21WbElITnBkR1Z6SUdSMWNtbHVaeUF5TURJeklDWWdNakF5TkNBbUlESXdNalZjYm1SbVgySmpjMTl3Y205d2IzSjBhVzl1YzE5dVpYY2dQQzBnY21KcGJtUW9aR1pmUWtOVFgzQnliM0J2Y25ScGIyNXpNakF5TXl3Z1pHWmZRa05UWDNCeWIzQnZjblJwYjI1ek1qQXlOQ3dnWkdaZlFrTlRYM0J5YjNCdmNuUnBiMjV6TWpBeU5TbGNibHh1WkdaZlltTnpYM0J5YjNCdmNuUnBiMjV6WDI1bGR6d3RJR1JtWDJKamMxOXdjbTl3YjNKMGFXOXVjMTl1WlhjZ0pUNGxJR1pwYkhSbGNpZ2hjMmwwWlQwOVhDSk1RVlZTWENJcFhHNWNibWRuY0d4dmRDaGtZWFJoUFdSbVgySmpjMTl3Y205d2IzSjBhVzl1YzE5dVpYY3NJR0ZsY3loNFBXMXZiblJvTENCNVBTQlFjbTl3YjNKMGFXOXVMQ0JtYVd4c1BXTnZibVJwZEdsdmJsOXpZMjl5WlY5aWFXNHBLU0FyWEc0Z0lHZGxiMjFmWW1GeUtIZHBaSFJvSUQwZ0xqVXNJSE4wWVhROVhDSnBaR1Z1ZEdsMGVWd2lMQ0J3YjNOcGRHbHZiaUE5SUZ3aVptbHNiRndpTEdOdmJHOTFjaUE5SUZ3aVlteGhZMnRjSWlrcklDQmNiaUFnSUhSb1pXMWxYMkozS0NrZ0t5QWdkR2hsYldVb2NHRnVaV3d1WjNKcFpDNXRZV3B2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1N3Z2NHRnVaV3d1WjNKcFpDNXRhVzV2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1NrcklGeHVJQ0IwYUdWdFpTaGhlR2x6TG5SbGVIUXVlQ0E5SUdWc1pXMWxiblJmZEdWNGRDaGhibWRzWlNBOUlEUTFMQ0IyYW5WemRDQTlJREVzSUdocWRYTjBQVEVwS1N0Y2JpQWdiR0ZpY3lobWFXeHNJRDFjSWtKdlpIa2dZMjl1WkdsMGFXOXVJSE5qYjNKbGMxd2lLU3RjYmlBZ2JHRmljeWgwYVhSc1pUMWNJbEJ5YjNCdmNuUnBiMjRnYjJZZ1ltOWtlU0JqYjI1a2FYUnBiMjRnYzJOdmNtVnpYQ0lzSUhnZ1BWd2liVzl1ZEdoY0lpd2dlU0E5SUZ3aVVISnZjRzl5ZEdsdmJsd2lLU3NnZEdobGJXVW9ZWGhwY3k1MGFYUnNaUzU1SUQwZ1pXeGxiV1Z1ZEY5MFpYaDBLSE5wZW1VZ1BTQnlaV3dvTVM0ektTd2dZVzVuYkdVZ1BUa3dLU3dnWVhocGN5NTBhWFJzWlM1NElEMGdaV3hsYldWdWRGOTBaWGgwS0hOcGVtVWdQU0J5Wld3b01TNHpLU3dnWVc1bmJHVWdQU0F3S1NrclhHNGdJSFJvWlcxbEtHRjRhWE11ZEdWNGREMWxiR1Z0Wlc1MFgzUmxlSFFvYzJsNlpUMHhNaWtwSzF4dWMyTmhiR1ZmWm1sc2JGOWljbVYzWlhJb2NHRnNaWFIwWlNBOUlGd2lRbXgxWlhOY0lpd2daR2x5WldOMGFXOXVJRDBnTFRFcEsxeHVJQ0FnSTNOallXeGxYM2hmWTI5dWRHbHVkVzkxY3loY0lrMXZiblJvWENJc0lHSnlaV0ZyY3lBOUlHTW9NeXcwTERVc05pdzNMRGdzT1N3eE1Da3BLeUJjYmlBZ1ptRmpaWFJmWjNKcFpDaDVaV0Z5SUg1emFYUmxLVnh1WUdCZ0luMD0gLS0+XG5cbmBgYHJcbiMgUHJvcG9ydGlvbiBwZXIgbW9udGggb2YgaW50ZW5zaXR5IHNjb3JlcyBhdCB0aHJlZSBzaXRlcyBkdXJpbmcgMjAyMyAmIDIwMjQgJiAyMDI1XG5kZl9iY3NfcHJvcG9ydGlvbnNfbmV3IDwtIHJiaW5kKGRmX0JDU19wcm9wb3J0aW9uczIwMjMsIGRmX0JDU19wcm9wb3J0aW9uczIwMjQsIGRmX0JDU19wcm9wb3J0aW9uczIwMjUpXG5cbmRmX2Jjc19wcm9wb3J0aW9uc19uZXc8LSBkZl9iY3NfcHJvcG9ydGlvbnNfbmV3ICU+JSBmaWx0ZXIoIXNpdGU9PVwiTEFVUlwiKVxuXG5nZ3Bsb3QoZGF0YT1kZl9iY3NfcHJvcG9ydGlvbnNfbmV3LCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgK1xuICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PVwiaWRlbnRpdHlcIiwgcG9zaXRpb24gPSBcImZpbGxcIixjb2xvdXIgPSBcImJsYWNrXCIpKyAgXG4gICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdD0xKSkrXG4gIGxhYnMoZmlsbCA9XCJCb2R5IGNvbmRpdGlvbiBzY29yZXNcIikrXG4gIGxhYnModGl0bGU9XCJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3Jlc1wiLCB4ID1cIm1vbnRoXCIsIHkgPSBcIlByb3BvcnRpb25cIikrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCkpK1xuICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKStcbnNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSBcIkJsdWVzXCIsIGRpcmVjdGlvbiA9IC0xKStcbiAgICNzY2FsZV94X2NvbnRpbnVvdXMoXCJNb250aFwiLCBicmVha3MgPSBjKDMsNCw1LDYsNyw4LDksMTApKSsgXG4gIGZhY2V0X2dyaWQoeWVhciB+c2l0ZSlcbmBgYFxuXG48IS0tIHJuYi1zb3VyY2UtZW5kIC0tPlxuIn0= -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuIyBQcm9wb3J0aW9uIHBlciBtb250aCBvZiBpbnRlbnNpdHkgc2NvcmVzIGF0IHRocmVlIHNpdGVzIGR1cmluZyAyMDIzICYgMjAyNCAmIDIwMjVcbmRmX2Jjc19wcm9wb3J0aW9uc19uZXcgPC0gcmJpbmQoZGZfQkNTX3Byb3BvcnRpb25zMjAyMywgZGZfQkNTX3Byb3BvcnRpb25zMjAyNCwgZGZfQkNTX3Byb3BvcnRpb25zMjAyNSlcblxuZGZfYmNzX3Byb3BvcnRpb25zX25ldzwtIGRmX2Jjc19wcm9wb3J0aW9uc19uZXcgJT4lIGZpbHRlcighc2l0ZT09XCJMQVVSXCIpXG5cbmdncGxvdChkYXRhPWRmX2Jjc19wcm9wb3J0aW9uc19uZXcsIGFlcyh4PW1vbnRoLCB5PSBQcm9wb3J0aW9uLCBmaWxsPWNvbmRpdGlvbl9zY29yZV9iaW4pKSArXG4gIGdlb21fYmFyKHdpZHRoID0gLjUsIHN0YXQ9XCJpZGVudGl0eVwiLCBwb3NpdGlvbiA9IFwiZmlsbFwiLGNvbG91ciA9IFwiYmxhY2tcIikrICBcbiAgIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0PTEpKStcbiAgbGFicyhmaWxsID1cIkJvZHkgY29uZGl0aW9uIHNjb3Jlc1wiKStcbiAgbGFicyh0aXRsZT1cIlByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzXCIsIHggPVwibW9udGhcIiwgeSA9IFwiUHJvcG9ydGlvblwiKSsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPTkwKSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSkrXG4gIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpK1xuc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9IFwiQmx1ZXNcIiwgZGlyZWN0aW9uID0gLTEpK1xuICAgI3NjYWxlX3hfY29udGludW91cyhcIk1vbnRoXCIsIGJyZWFrcyA9IGMoMyw0LDUsNiw3LDgsOSwxMCkpKyBcbiAgZmFjZXRfZ3JpZCh5ZWFyIH5zaXRlKVxuYGBgIn0= -->

```r
# Proportion per month of intensity scores at three sites during 2023 & 2024 & 2025
df_bcs_proportions_new <- rbind(df_BCS_proportions2023, df_BCS_proportions2024, df_BCS_proportions2025)

df_bcs_proportions_new<- df_bcs_proportions_new %>% filter(!site=="LAUR")

ggplot(data=df_bcs_proportions_new, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat="identity", position = "fill",colour = "black")+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(fill ="Body condition scores")+
  labs(title="Proportion of body condition scores", x ="month", y = "Proportion")+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
scale_fill_brewer(palette = "Blues", direction = -1)+
   #scale_x_continuous("Month", breaks = c(3,4,5,6,7,8,9,10))+ 
  facet_grid(year ~site)

#Shell Pathology - all data #Includes 2023 data and all data that is in the 2024 format

shell_path <- list.files(path = "Lab_Data_TissueProcessing/raw_data/shell_pathology",                           # Identify all CSV files
 pattern = "*.csv", full.names = TRUE) %>% 
lapply(read_csv) %>%   # Store all files in list
  bind_rows          # Combine data sets into one data set 
Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (24): boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_add, cyst_absces...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (24): boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_add, cyst_absces...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (25): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (25): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (25): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (25): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 45 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_add, cyst_absces...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 15── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (14): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 28 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (13): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.New names:Rows: 999 Columns: 26── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): lab_id
lgl (25): pathology_notes, boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, dis...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 30 Columns: 14── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): lab_id, pathology_notes
lgl (12): boring_sponge, shell_scarring, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, pale_digestive, discoloration, horn_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.Rows: 838 Columns: 11── Column specification ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (2): lab_id, pathology_notes
lgl (9): boring_sponge, polydora, conchiolin_mod_severe, mud_blister, pea_crab, gill_erosion, horn_add, shell_scarring, cyst_abscess
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
shell_path <- shell_path %>% filter(!is.na(lab_id))

shell_path <- shell_path %>% select(-c("...14":"...26"))

write.csv(shell_path, "Master_files/shell_pathology_all_data.csv", row.names=FALSE)


#Writing summary for shell pathology
shell_path_summary <- shell_path%>% separate(lab_id, c('Date_Site', 'ID'))
shell_path_summary <- select(shell_path_summary, -c("pathology_notes","ID",))
shell_path_summary$boring_sponge <- as.integer(as.logical(shell_path_summary$boring_sponge))
shell_path_summary$polydora <- as.integer(as.logical(shell_path_summary$polydora))
shell_path_summary$conchiolin_mod_severe <- as.integer(as.logical(shell_path_summary$conchiolin_mod_severe))
shell_path_summary$mud_blister <- as.integer(as.logical(shell_path_summary$mud_blister))
shell_path_summary$pea_crab <- as.integer(as.logical(shell_path_summary$pea_crab))
shell_path_summary$gill_erosion <- as.integer(as.logical(shell_path_summary$gill_erosion))
shell_path_summary$pale_digestive <- as.integer(as.logical(shell_path_summary$pale_digestive))
shell_path_summary$discoloration <- as.integer(as.logical(shell_path_summary$discoloration))
shell_path_summary$horn_add <- as.integer(as.logical(shell_path_summary$horn_add))
shell_path_summary$cyst_abscess <- as.integer(as.logical(shell_path_summary$cyst_abscess))
shell_path_summary$tumor <- as.integer(as.logical(shell_path_summary$tumor))
shell_path_summary$oyster_drill <- as.integer(as.logical(shell_path_summary$oyster_drill))
shell_path_summary$boring_snail <- as.integer(as.logical(shell_path_summary$boring_snail))
shell_path_summary$shell_scarring <- as.integer(as.logical(shell_path_summary$shell_scarring))
shell_path_count<- shell_path_summary %>%
  dplyr::group_by(Date_Site) %>%
  dplyr::summarize(Sample_count = n(),
              Boring_sponge =sum(boring_sponge),
              Polydora = sum(polydora),
              Conchiolin =sum(conchiolin_mod_severe),
              Mud_blister =sum(mud_blister),
              Pea_crab =sum(pea_crab),
              Gill_erosion =sum(gill_erosion),
              Pale_digestive =sum(pale_digestive),
              Discoloration =sum(discoloration),
              Horn =sum(horn_add),
              Cyst =sum(cyst_abscess),
              Tumor =sum(tumor),
              Oyster_drill =sum(oyster_drill),
              Boring_snail =sum(boring_snail),
              Shell_scarring =sum(shell_scarring),
              Pathogen_count = sum(boring_sponge,polydora,conchiolin_mod_severe, mud_blister, pea_crab,
                                    gill_erosion, pale_digestive, discoloration, horn_add, cyst_abscess,
                                    tumor, oyster_drill, boring_snail, shell_scarring, na.rm = TRUE)) %>%
  ungroup()
write.csv(shell_path_count, "Lab_Data_TissueProcessing/output/shell_pathology_counts.csv", row.names=FALSE)

shell_path_summary

Ash Creek Summary


df_ASHC<- data_all%>%
  filter(site=="ASHC")
df_ASHC

## Shell Height ##
st_height_ASHC <- summarySE(df_ASHC, measurevar="height_mm", groupvars=c("date_collected"))
st_height_ASHC

## Body Condition ##
#Excludes April and May due to scoring change. These months are scored categorically 'fat, medium, watery'. 

st_condition_ASHC<- summarySE(df_ASHC, measurevar = "condition_score", groupvars = c("date_collected"))
st_condition_ASHC

mean_condition_ASHC <- st_condition_ASHC %>%
  filter(!is.na(condition_score)) %>%  # Filter out rows where condition_score is NA
  summarize(mean_bcs = mean(condition_score, na.rm = TRUE))
mean_condition_ASHC
NA
ggplot(data=df_ASHC, aes(x=month, y=height_mm, group= month)) +
  geom_boxplot()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=" Ash Creek Mean Shell Height ", x ="month", y = "Mean Shell Height (mm)")+facet_wrap(.~year)

#Condition distribution across all sample months - 2023
df_ASHC_2023 <- df_ASHC%>%  filter(!year=="2024")

ASHC_BCS_dist2023 <-ggplot(data=df_ASHC_2023, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Ash Creek Body Condition Score - 2023", x ="Condition categorization")+
  facet_wrap(~ month, scales = "free")
ASHC_BCS_dist2023

pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/ASHC_BCS_dist_2023.pdf"), height = 7, width = 13)
print(ASHC_BCS_dist2023)
dev.off()
png 
  2 

#Condition distribution across all sample months - 2024
df_ASHC_2024 <- df_ASHC%>%  filter(!year=="2023")

ASHC_BCS_dist2024 <-ggplot(data=df_ASHC_2024, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Ash Creek Body Condition Score - 2024", x ="Condition categorization")+
  facet_wrap(~ month, scales = "free")
ASHC_BCS_dist2024

pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/ASHC_BCS_dist_2024.pdf"), height = 7, width = 13)
print(ASHC_BCS_dist2024)
dev.off()
png 
  2 

#Condition distribution across all sample months - 2025
df_ASHC_2025 <- df_ASHC%>%  filter(year=="2025")

ASHC_BCS_dist2025 <-ggplot(data=df_ASHC_2025, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Ash Creek Body Condition Score - 2025", x ="Condition categorization")+
  facet_wrap(~ month, scales = "free")
ASHC_BCS_dist2025

pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/ASHC_BCS_dist_2025.pdf"), height = 7, width = 13)
print(ASHC_BCS_dist2025)
dev.off()
png 
  2 

#Mean Body condition per month
ggplot(data=df_ASHC, aes(x= month, y= condition_score, group = month)) +
  geom_boxplot()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Ash Creek Mean Body Condition Score ", x ="month", y= " condition score (1-9)") + scale_y_reverse()+facet_wrap(.~year)

#ASHC Proportions graph Body condition scores - all years


ASHC_BCS_proportions<- df_ASHC %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ "1", condition_score == 2 ~"2",condition_score == 3 ~ "3", condition_score == 4 ~"4",condition_score == 5 ~ "5", condition_score == 6 ~"6",condition_score == 7 ~ "7", condition_score == 8 ~"8", condition_score ==9 ~"9", TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, condition_score_bin, year) %>% dplyr::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))
`summarise()` has grouped output by 'site', 'month', 'condition_score_bin'. You can override using the `.groups` argument.
ASHC_BCS_proportions<- na.omit(ASHC_BCS_proportions)

ASHC_BCS_proportions

BCS_proportion_ASHC<- ggplot(data=ASHC_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat="identity", position = "fill")+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title="Ash Creek Proportion of body condition scores June- November", x ="month", y = "Proportion of body condition scores ")+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  facet_wrap(~ year)
 #scale_fill_brewer() +
  #facet_wrap(~ site)

BCS_proportion_ASHC
  
pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/ASHC_BCS_proportion.pdf"), height = 7, width = 13)
print(BCS_proportion_ASHC)
dev.off()
png 
  2 

% of scores >3 at ash creek - all years

df_ASHC

ASHC_precent_greater_3 <- df_ASHC %>%
  dplyr::group_by(month, site, year) %>%
  dplyr::summarise(Percentage = mean(condition_score <= 3)*100)
`summarise()` has grouped output by 'month', 'site'. You can override using the `.groups` argument.
ASHC_precent_greater_3

ASHC_BCS_percentage <- ASHC_precent_greater_3%>% 
  #filter(year =="2024")%>%
  ggplot(aes(x = month, y = Percentage)) +
  #geom_bar(width = 0.5, stat = "identity", position = "fill") +
    geom_col()+
  theme_bw() +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    axis.title.y = element_text(size = rel(1.3), angle = 90),
    axis.title.x = element_text(size = rel(1.3), angle = 0),
    axis.text = element_text(size = 12)
  ) +
  labs(
    title = "Ash Creek % of body condition scores >= 3",
    x = "month",
    y = "Percentage of body condition scores >= 3"
  ) +
    facet_wrap(~year)
  #scale_x_continuous( breaks = seq(5,12, by =1) )+
  #ylim(0,60)+ 
  #scale_y_continuous(limits = c(0,100), breaks = seq(0,100, by = 10))
ASHC_BCS_percentage

pdf(paste0(path = "Lab_Data_TissueProcessing/output", "/ASHC_BCS_percentage.pdf"),height = 7, width = 13)
print(ASHC_BCS_percentage)
dev.off() 
png 
  2 

Fence Creek Summary

df_FENC<- data_all%>%
  filter(site=="FENC")
df_FENC

## Shell Height ##
st_height_FENC <- summarySE(df_FENC, measurevar="height_mm", groupvars=c("date_collected"))
st_height_FENC 

## Body Condition ##
#Excludes April and May due to scoring change. These months are scored categorically 'fat, medium, watery'. 

st_condition_FENC<- summarySE(df_FENC%>% filter(!is.na(condition_score)), measurevar = "condition_score", groupvars = c("date_collected"))
st_condition_FENC
NA
ggplot(data=df_FENC, aes(x=month, y=height_mm, group=month)) +
  geom_boxplot()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=" Fence Creek Mean Shell Height ", x ="month", y = "Mean Shell Height (mm)")+ facet_wrap(.~year)

#Condition distribution across all sample months - 2023
df_FENC.2023 <- df_FENC%>%  filter(!year=="2024")

ggplot(data=df_FENC.2023, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Fence Creek Body Condition index - 2023", x ="Condition categorization")+
    facet_wrap(~ month, scales = "free")


#Condition distribution across all sample months - 2024
df_FENC.2024 <- df_FENC%>%  filter(!year=="2023")

ggplot(data=df_FENC.2024, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Fence Creek Body Condition index - 2024", x ="Condition categorization")+
    facet_wrap(~ month, scales = "free")


#Mean Body condition per month
ggplot(data=df_FENC, aes(x= month, y= condition_score, group = month)) +
  geom_boxplot()+  #scale_fill_manual(values=c("forestgreen","orange", "purple"))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title="Fence Creek Mean Body Condition Score", x ="month", y= " condition score (1-9)")+ scale_y_reverse() + facet_wrap(~ year, scales = "free")

#FENC Proportions graph Body condition scores - all years


FENC_BCS_proportions<- df_FENC %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ "1", condition_score == 2 ~"2",condition_score == 3 ~ "3", condition_score == 4 ~"4",condition_score == 5 ~ "5", condition_score == 6 ~"6",condition_score == 7 ~ "7", condition_score == 8 ~"8", condition_score ==9 ~"9", TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, condition_score_bin, year) %>% dplyr::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))
`summarise()` has grouped output by 'site', 'month', 'condition_score_bin'. You can override using the `.groups` argument.
FENC_BCS_proportions<- na.omit(FENC_BCS_proportions)

FENC_BCS_proportions

BCS_proportion_FENC<- ggplot(data=FENC_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat="identity", position = "fill")+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title="Fence Creek Proportion of body condition scores", x ="month", y = "Proportion of body condition scores ")+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
  facet_wrap(~ year)
 #scale_fill_brewer() +
  #facet_wrap(~ site)

BCS_proportion_FENC
  
pdf(paste0(path = "Lab_Data_TissueProcessing/output" ,"/FENC_BCS_proportion.pdf"), height = 7, width = 13)
print(BCS_proportion_FENC)
dev.off()
png 
  2 

% of scores >3 at Fence Creek - all years

#removing 0823FENC_28 bcs was NA
df_FENC <- df_FENC %>% drop_na(condition)

FENC_precent_greater_3 <- df_FENC %>%
  dplyr::group_by(month, year) %>%
  dplyr::summarise(Percentage = mean(condition_score <= 3)*100)
`summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
FENC_precent_greater_3

FENC_BCS_percentage <- ggplot(FENC_precent_greater_3,aes(x = month, y = Percentage)) +
  #geom_bar(width = 0.5, stat = "identity", position = "fill") +
    geom_col()+
  theme_bw() +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    axis.title.y = element_text(size = rel(1.3), angle = 90),
    axis.title.x = element_text(size = rel(1.3), angle = 0),
    axis.text = element_text(size = 12)
  ) +
  labs(
    title = "Fence Creek % of body condition scores >= 3",
    x = "month",
    y = "Percentage of body condition scores >= 3"
  ) +
    facet_wrap(~year)
  #scale_x_continuous( breaks = seq(5,12, by =1) )+
  #ylim(0,60)+ 
  #scale_y_continuous(limits = c(0,100), breaks = seq(0,100, by = 10))
FENC_BCS_percentage

pdf(paste0(path = "Lab_Data_TissueProcessing/output", "/FENC_BCS_percentage.pdf"),height = 7, width = 13)
print(FENC_BCS_percentage)
dev.off() 
png 
  2 

Gold Star Beach Summary

0524GOLD has 46 samples - we attempted to sample from 2022 and 2023 planting and consider them seperate but it appeared that due to a storm the plantings mixed together.


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZGZfR09MRDwtIGRhdGFfYWxsJT4lXG4gIGZpbHRlcihzaXRlPT1cIkdPTERcIilcbmRmX0dPTEQgPC0gZGZfR09MRCAlPiUgZmlsdGVyKCFpcy5uYShoZWlnaHRfbW0pKVxuXG4jMjAyMyBkYXRhXG5kZl9HT0xEMjAyMyA8LSBkZl9HT0xEJT4lICBmaWx0ZXIoIXllYXI9PVwiMjAyNFwiKVxuXG4jMjAyNCBkYXRhXG5kZl9HT0xEMjAyNCA8LSBkZl9HT0xEJT4lICBmaWx0ZXIoIXllYXI9PVwiMjAyM1wiKVxuXG5kZl9HT0xEJGhlaWdodF9tbTwtYXMubnVtZXJpYyhkZl9HT0xEJGhlaWdodF9tbSlcblxubWVhbl9zaGVsbF9oZWlnaHQgPC0gZGZfR09MRCAlPiUgbXV0YXRlKHllYXIgPSB5ZWFyKGRhdGVfY29sbGVjdGVkKSkgJT4lIGdyb3VwX2J5KHllYXIpJT4lIGRwbHlyOjpzdW1tYXJpc2UobWVhbl9oZWlnaHQgPSBtZWFuKGhlaWdodF9tbSkpICNzdW1tYXJ5U0UobWVhc3VyZXZhcj1cImhlaWdodF9tbVwiLCBncm91cHZhcnM9YyhcInllYXJcIikpXG5tZWFuX3NoZWxsX2hlaWdodFxuXG4jIyBTaGVsbCBIZWlnaHQgIyNcbnN0X2hlaWdodF9HT0xEIDwtIHN1bW1hcnlTRShkZl9HT0xELCBtZWFzdXJldmFyPVwiaGVpZ2h0X21tXCIsIGdyb3VwdmFycz1jKFwiZGF0ZV9jb2xsZWN0ZWRcIikpXG5zdF9oZWlnaHRfR09MRCBcblxuIyMgQm9keSBDb25kaXRpb24gIyNcbnN0X2NvbmRpdGlvbl9HT0xEPC0gc3VtbWFyeVNFKGRmX0dPTEQsIG1lYXN1cmV2YXIgPSBcImNvbmRpdGlvbl9zY29yZVwiLCBncm91cHZhcnMgPSBjKFwiZGF0ZV9jb2xsZWN0ZWRcIikpXG5zdF9jb25kaXRpb25fR09MRFxuXG5gYGAifQ== -->

```r
df_GOLD<- data_all%>%
  filter(site==\GOLD\)
df_GOLD <- df_GOLD %>% filter(!is.na(height_mm))

#2023 data
df_GOLD2023 <- df_GOLD%>%  filter(!year==\2024\)

#2024 data
df_GOLD2024 <- df_GOLD%>%  filter(!year==\2023\)

df_GOLD$height_mm<-as.numeric(df_GOLD$height_mm)

mean_shell_height <- df_GOLD %>% mutate(year = year(date_collected)) %>% group_by(year)%>% dplyr::summarise(mean_height = mean(height_mm)) #summarySE(measurevar=\height_mm\, groupvars=c(\year\))
mean_shell_height

## Shell Height ##
st_height_GOLD <- summarySE(df_GOLD, measurevar=\height_mm\, groupvars=c(\date_collected\))
st_height_GOLD 

## Body Condition ##
st_condition_GOLD<- summarySE(df_GOLD, measurevar = \condition_score\, groupvars = c(\date_collected\))
st_condition_GOLD

```

<!-- rnb-source-end -->
```r
df_GOLD<- data_all%>%
  filter(site==\GOLD\)
df_GOLD <- df_GOLD %>% filter(!is.na(height_mm))

#2023 data
df_GOLD2023 <- df_GOLD%>%  filter(!year==\2024\)

#2024 data
df_GOLD2024 <- df_GOLD%>%  filter(!year==\2023\)

df_GOLD$height_mm<-as.numeric(df_GOLD$height_mm)

mean_shell_height <- df_GOLD %>% mutate(year = year(date_collected)) %>% group_by(year)%>% dplyr::summarise(mean_height = mean(height_mm)) #summarySE(measurevar=\height_mm\, groupvars=c(\year\))
mean_shell_height

## Shell Height ##
st_height_GOLD <- summarySE(df_GOLD, measurevar=\height_mm\, groupvars=c(\date_collected\))
st_height_GOLD 

## Body Condition ##
st_condition_GOLD<- summarySE(df_GOLD, measurevar = \condition_score\, groupvars = c(\date_collected\))
st_condition_GOLD

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->

#GOLD Proportions graph Body condition scores


<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVYRzVIVDB4RVgwSkRVMTl3Y205d2IzSjBhVzl1Y3p3dElHUm1YMGRQVEVRZ0pUNGxYRzRnSUcxMWRHRjBaU2hqYjI1a2FYUnBiMjVmYzJOdmNtVmZiblZ0WlhKcFl5QTlJR0Z6TG01MWJXVnlhV01vWTI5dVpHbDBhVzl1WDNOamIzSmxLU3hqYjI1a2FYUnBiMjVmYzJOdmNtVmZZbWx1SUQwZ1kyRnpaVjkzYUdWdUtHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQXhJSDRnWENJeFhDSXNJR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0F5SUg1Y0lqSmNJaXhqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTXlCK0lGd2lNMXdpTENCamIyNWthWFJwYjI1ZmMyTnZjbVVnUFQwZ05DQitYQ0kwWENJc1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOUlEVWdmaUJjSWpWY0lpd2dZMjl1WkdsMGFXOXVYM05qYjNKbElEMDlJRFlnZmx3aU5sd2lMR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0EzSUg0Z1hDSTNYQ0lzSUdOdmJtUnBkR2x2Ymw5elkyOXlaU0E5UFNBNElINWNJamhjSWl3Z1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOU9TQitYQ0k1WENJc0lGUlNWVVVnZmlCaGN5NWphR0Z5WVdOMFpYSW9ZMjl1WkdsMGFXOXVYM05qYjNKbEtTa3BJQ1UrSlZ4dUlDQm5jbTkxY0Y5aWVTaHphWFJsTENCdGIyNTBhQ3dnZVdWaGNpd2dZMjl1WkdsMGFXOXVYM05qYjNKbFgySnBiaWtnSlQ0bElHUndiSGx5T2pwemRXMXRZWEpwYzJVb1EyOTFiblE5SUc0b0tTa2dKVDRsWEc0Z0lIVnVaM0p2ZFhBb0tTQWxQaVZjYmlBZ2JYVjBZWFJsS0ZCeWIzQnZjblJwYjI0Z1BTQkRiM1Z1ZEM5emRXMG9RMjkxYm5RcEtWeHVYRzVIVDB4RVgwSkRVMTl3Y205d2IzSjBhVzl1Y3p3dElHNWhMbTl0YVhRb1IwOU1SRjlDUTFOZmNISnZjRzl5ZEdsdmJuTXBYRzVjYmtKRFUxOXdjbTl3YjNKMGFXOXVYMGRQVEVRZ1BDMGdaMmR3Ykc5MEtHUmhkR0U5UjA5TVJGOUNRMU5mY0hKdmNHOXlkR2x2Ym5Nc0lHRmxjeWg0UFcxdmJuUm9MQ0I1UFNCUWNtOXdiM0owYVc5dUxDQm1hV3hzUFdOdmJtUnBkR2x2Ymw5elkyOXlaVjlpYVc0cEtTQXJYRzRnSUdkbGIyMWZZbUZ5S0hkcFpIUm9JRDBnTGpVc0lITjBZWFE5WENKcFpHVnVkR2wwZVZ3aUxDQndiM05wZEdsdmJpQTlJRndpWm1sc2JGd2lMQ0JqYjJ4dmRYSWdQU0JjSW1Kc1lXTnJYQ0lwS3lBZ1hHNGdJQ0IwYUdWdFpWOWlkeWdwSUNzZ0lIUm9aVzFsS0hCaGJtVnNMbWR5YVdRdWJXRnFiM0lnUFNCbGJHVnRaVzUwWDJKc1lXNXJLQ2tzSUhCaGJtVnNMbWR5YVdRdWJXbHViM0lnUFNCbGJHVnRaVzUwWDJKc1lXNXJLQ2twS3lCY2JpQWdkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBME5Td2dkbXAxYzNRZ1BTQXhMQ0JvYW5WemREMHhLU2tyWEc0Z0lHeGhZbk1vZEdsMGJHVTlYQ0pIYjJ4a0lGTjBZWElnUW1WaFkyZ2dVSEp2Y0c5eWRHbHZiaUJ2WmlCaWIyUjVJR052Ym1ScGRHbHZiaUJ6WTI5eVpYTmNJaXdnZUNBOVhDSnRiMjUwYUZ3aUxDQjVJRDBnWENKUWNtOXdiM0owYVc5dUlHOW1JR0p2WkhrZ1kyOXVaR2wwYVc5dUlITmpiM0psY3lCY0lpa3JJSFJvWlcxbEtHRjRhWE11ZEdsMGJHVXVlU0E5SUdWc1pXMWxiblJmZEdWNGRDaHphWHBsSUQwZ2NtVnNLREV1TXlrc0lHRnVaMnhsSUQwNU1Da3NJR0Y0YVhNdWRHbDBiR1V1ZUNBOUlHVnNaVzFsYm5SZmRHVjRkQ2h6YVhwbElEMGdjbVZzS0RFdU15a3NJR0Z1WjJ4bElEMGdNQ2twSzF4dUlDQjBhR1Z0WlNoaGVHbHpMblJsZUhROVpXeGxiV1Z1ZEY5MFpYaDBLSE5wZW1VOU1USXBLU3RjYm5OallXeGxYMlpwYkd4ZlluSmxkMlZ5S0hCaGJHVjBkR1VnUFNCY0lrSnNkV1Z6WENJc0lHUnBjbVZqZEdsdmJpQTlJQzB4S1N0Y2JpQWdabUZqWlhSZmQzSmhjQ2grSUhsbFlYSXBYRzVDUTFOZmNISnZjRzl5ZEdsdmJsOUhUMHhFWEc1Y2JseHVJQ0JjYm5Ca1ppaHdZWE4wWlRBb2NHRjBhQ0E5SUZ3aVRHRmlYMFJoZEdGZlZHbHpjM1ZsVUhKdlkyVnpjMmx1Wnk5dmRYUndkWFJjSWlBc1hDSXZSMDlNUkY5Q1ExTmZjSEp2Y0c5eWRHbHZiaTV3WkdaY0lpa3NJR2hsYVdkb2RDQTlJRGNzSUhkcFpIUm9JRDBnTVRNcFhHNXdjbWx1ZENoQ1ExTmZjSEp2Y0c5eWRHbHZibDlIVDB4RUtWeHVaR1YyTG05bVppZ3BYRzVnWUdBaWZRPT0gLS0+XG5cbmBgYHJcblxuR09MRF9CQ1NfcHJvcG9ydGlvbnM8LSBkZl9HT0xEICU+JVxuICBtdXRhdGUoY29uZGl0aW9uX3Njb3JlX251bWVyaWMgPSBhcy5udW1lcmljKGNvbmRpdGlvbl9zY29yZSksY29uZGl0aW9uX3Njb3JlX2JpbiA9IGNhc2Vfd2hlbihjb25kaXRpb25fc2NvcmUgPT0gMSB+IFxcMVxcLCBjb25kaXRpb25fc2NvcmUgPT0gMiB+XFwyXFwsY29uZGl0aW9uX3Njb3JlID09IDMgfiBcXDNcXCwgY29uZGl0aW9uX3Njb3JlID09IDQgflxcNFxcLGNvbmRpdGlvbl9zY29yZSA9PSA1IH4gXFw1XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH5cXDZcXCxjb25kaXRpb25fc2NvcmUgPT0gNyB+IFxcN1xcLCBjb25kaXRpb25fc2NvcmUgPT0gOCB+XFw4XFwsIGNvbmRpdGlvbl9zY29yZSA9PTkgflxcOVxcLCBUUlVFIH4gYXMuY2hhcmFjdGVyKGNvbmRpdGlvbl9zY29yZSkpKSAlPiVcbiAgZ3JvdXBfYnkoc2l0ZSwgbW9udGgsIHllYXIsIGNvbmRpdGlvbl9zY29yZV9iaW4pICU+JSBkcGx5cjo6c3VtbWFyaXNlKENvdW50PSBuKCkpICU+JVxuICB1bmdyb3VwKCkgJT4lXG4gIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSlcblxuR09MRF9CQ1NfcHJvcG9ydGlvbnM8LSBuYS5vbWl0KEdPTERfQkNTX3Byb3BvcnRpb25zKVxuXG5CQ1NfcHJvcG9ydGlvbl9HT0xEIDwtIGdncGxvdChkYXRhPUdPTERfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgK1xuICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PVxcaWRlbnRpdHlcXCwgcG9zaXRpb24gPSBcXGZpbGxcXCwgY29sb3VyID0gXFxibGFja1xcKSsgIFxuICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZCBTdGFyIEJlYWNoIFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzXFwsIHggPVxcbW9udGhcXCwgeSA9IFxcUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgXFwpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApKStcbiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkrXG5zY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gXFxCbHVlc1xcLCBkaXJlY3Rpb24gPSAtMSkrXG4gIGZhY2V0X3dyYXAofiB5ZWFyKVxuQkNTX3Byb3BvcnRpb25fR09MRFxuXG5cbiAgXG5wZGYocGFzdGUwKHBhdGggPSBcXExhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFwgLFxcL0dPTERfQkNTX3Byb3BvcnRpb24ucGRmXFwpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxucHJpbnQoQkNTX3Byb3BvcnRpb25fR09MRClcbmRldi5vZmYoKVxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->

GOLD_BCS_proportions<- df_GOLD %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ \1\, condition_score == 2 ~\2\,condition_score == 3 ~ \3\, condition_score == 4 ~\4\,condition_score == 5 ~ \5\, condition_score == 6 ~\6\,condition_score == 7 ~ \7\, condition_score == 8 ~\8\, condition_score ==9 ~\9\, TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, year, condition_score_bin) %>% dplyr::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))

GOLD_BCS_proportions<- na.omit(GOLD_BCS_proportions)

BCS_proportion_GOLD <- ggplot(data=GOLD_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\, colour = \black\)+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title=\Gold Star Beach Proportion of body condition scores\, x =\month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
scale_fill_brewer(palette = \Blues\, direction = -1)+
  facet_wrap(~ year)
BCS_proportion_GOLD


  
pdf(paste0(path = \Lab_Data_TissueProcessing/output\ ,\/GOLD_BCS_proportion.pdf\), height = 7, width = 13)
print(BCS_proportion_GOLD)
dev.off()



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVhHNUhUMHhFWDBKRFUxOXdjbTl3YjNKMGFXOXVjend0SUdSbVgwZFBURVFnSlQ0bFhHNGdJRzExZEdGMFpTaGpiMjVrYVhScGIyNWZjMk52Y21WZmJuVnRaWEpwWXlBOUlHRnpMbTUxYldWeWFXTW9ZMjl1WkdsMGFXOXVYM05qYjNKbEtTeGpiMjVrYVhScGIyNWZjMk52Y21WZlltbHVJRDBnWTJGelpWOTNhR1Z1S0dOdmJtUnBkR2x2Ymw5elkyOXlaU0E5UFNBeElINGdYRnd4WEZ3c0lHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQXlJSDVjWERKY1hDeGpiMjVrYVhScGIyNWZjMk52Y21VZ1BUMGdNeUIrSUZ4Y00xeGNMQ0JqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTkNCK1hGdzBYRndzWTI5dVpHbDBhVzl1WDNOamIzSmxJRDA5SURVZ2ZpQmNYRFZjWEN3Z1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOUlEWWdmbHhjTmx4Y0xHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQTNJSDRnWEZ3M1hGd3NJR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0E0SUg1Y1hEaGNYQ3dnWTI5dVpHbDBhVzl1WDNOamIzSmxJRDA5T1NCK1hGdzVYRndzSUZSU1ZVVWdmaUJoY3k1amFHRnlZV04wWlhJb1kyOXVaR2wwYVc5dVgzTmpiM0psS1NrcElDVStKVnh1SUNCbmNtOTFjRjlpZVNoemFYUmxMQ0J0YjI1MGFDd2dlV1ZoY2l3Z1kyOXVaR2wwYVc5dVgzTmpiM0psWDJKcGJpa2dKVDRsSUdSd2JIbHlPanB6ZFcxdFlYSnBjMlVvUTI5MWJuUTlJRzRvS1NrZ0pUNGxYRzRnSUhWdVozSnZkWEFvS1NBbFBpVmNiaUFnYlhWMFlYUmxLRkJ5YjNCdmNuUnBiMjRnUFNCRGIzVnVkQzl6ZFcwb1EyOTFiblFwS1Z4dVhHNUhUMHhFWDBKRFUxOXdjbTl3YjNKMGFXOXVjend0SUc1aExtOXRhWFFvUjA5TVJGOUNRMU5mY0hKdmNHOXlkR2x2Ym5NcFhHNWNia0pEVTE5d2NtOXdiM0owYVc5dVgwZFBURVFnUEMwZ1oyZHdiRzkwS0dSaGRHRTlSMDlNUkY5Q1ExTmZjSEp2Y0c5eWRHbHZibk1zSUdGbGN5aDRQVzF2Ym5Sb0xDQjVQU0JRY205d2IzSjBhVzl1TENCbWFXeHNQV052Ym1ScGRHbHZibDl6WTI5eVpWOWlhVzRwS1NBclhHNGdJR2RsYjIxZlltRnlLSGRwWkhSb0lEMGdMalVzSUhOMFlYUTlYRnhwWkdWdWRHbDBlVnhjTENCd2IzTnBkR2x2YmlBOUlGeGNabWxzYkZ4Y0xDQmpiMnh2ZFhJZ1BTQmNYR0pzWVdOclhGd3BLeUFnWEc0Z0lDQjBhR1Z0WlY5aWR5Z3BJQ3NnSUhSb1pXMWxLSEJoYm1Wc0xtZHlhV1F1YldGcWIzSWdQU0JsYkdWdFpXNTBYMkpzWVc1cktDa3NJSEJoYm1Wc0xtZHlhV1F1YldsdWIzSWdQU0JsYkdWdFpXNTBYMkpzWVc1cktDa3BLeUJjYmlBZ2RHaGxiV1VvWVhocGN5NTBaWGgwTG5nZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvWVc1bmJHVWdQU0EwTlN3Z2RtcDFjM1FnUFNBeExDQm9hblZ6ZEQweEtTa3JYRzRnSUd4aFluTW9kR2wwYkdVOVhGeEhiMnhrSUZOMFlYSWdRbVZoWTJnZ1VISnZjRzl5ZEdsdmJpQnZaaUJpYjJSNUlHTnZibVJwZEdsdmJpQnpZMjl5WlhOY1hDd2dlQ0E5WEZ4dGIyNTBhRnhjTENCNUlEMGdYRnhRY205d2IzSjBhVzl1SUc5bUlHSnZaSGtnWTI5dVpHbDBhVzl1SUhOamIzSmxjeUJjWENrcklIUm9aVzFsS0dGNGFYTXVkR2wwYkdVdWVTQTlJR1ZzWlcxbGJuUmZkR1Y0ZENoemFYcGxJRDBnY21Wc0tERXVNeWtzSUdGdVoyeGxJRDA1TUNrc0lHRjRhWE11ZEdsMGJHVXVlQ0E5SUdWc1pXMWxiblJmZEdWNGRDaHphWHBsSUQwZ2NtVnNLREV1TXlrc0lHRnVaMnhsSUQwZ01Da3BLMXh1SUNCMGFHVnRaU2hoZUdsekxuUmxlSFE5Wld4bGJXVnVkRjkwWlhoMEtITnBlbVU5TVRJcEtTdGNibk5qWVd4bFgyWnBiR3hmWW5KbGQyVnlLSEJoYkdWMGRHVWdQU0JjWEVKc2RXVnpYRndzSUdScGNtVmpkR2x2YmlBOUlDMHhLU3RjYmlBZ1ptRmpaWFJmZDNKaGNDaCtJSGxsWVhJcFhHNUNRMU5mY0hKdmNHOXlkR2x2Ymw5SFQweEVYRzVjYmx4dUlDQmNibkJrWmlod1lYTjBaVEFvY0dGMGFDQTlJRnhjVEdGaVgwUmhkR0ZmVkdsemMzVmxVSEp2WTJWemMybHVaeTl2ZFhSd2RYUmNYQ0FzWEZ3dlIwOU1SRjlDUTFOZmNISnZjRzl5ZEdsdmJpNXdaR1pjWENrc0lHaGxhV2RvZENBOUlEY3NJSGRwWkhSb0lEMGdNVE1wWEc1d2NtbHVkQ2hDUTFOZmNISnZjRzl5ZEdsdmJsOUhUMHhFS1Z4dVpHVjJMbTltWmlncFhHNWdZR0JjYm1CZ1lDSjkgLS0+XG5cbmBgYHJcbmBgYHJcblxuR09MRF9CQ1NfcHJvcG9ydGlvbnM8LSBkZl9HT0xEICU+JVxuICBtdXRhdGUoY29uZGl0aW9uX3Njb3JlX251bWVyaWMgPSBhcy5udW1lcmljKGNvbmRpdGlvbl9zY29yZSksY29uZGl0aW9uX3Njb3JlX2JpbiA9IGNhc2Vfd2hlbihjb25kaXRpb25fc2NvcmUgPT0gMSB+IFxcMVxcLCBjb25kaXRpb25fc2NvcmUgPT0gMiB+XFwyXFwsY29uZGl0aW9uX3Njb3JlID09IDMgfiBcXDNcXCwgY29uZGl0aW9uX3Njb3JlID09IDQgflxcNFxcLGNvbmRpdGlvbl9zY29yZSA9PSA1IH4gXFw1XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH5cXDZcXCxjb25kaXRpb25fc2NvcmUgPT0gNyB+IFxcN1xcLCBjb25kaXRpb25fc2NvcmUgPT0gOCB+XFw4XFwsIGNvbmRpdGlvbl9zY29yZSA9PTkgflxcOVxcLCBUUlVFIH4gYXMuY2hhcmFjdGVyKGNvbmRpdGlvbl9zY29yZSkpKSAlPiVcbiAgZ3JvdXBfYnkoc2l0ZSwgbW9udGgsIHllYXIsIGNvbmRpdGlvbl9zY29yZV9iaW4pICU+JSBkcGx5cjo6c3VtbWFyaXNlKENvdW50PSBuKCkpICU+JVxuICB1bmdyb3VwKCkgJT4lXG4gIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSlcblxuR09MRF9CQ1NfcHJvcG9ydGlvbnM8LSBuYS5vbWl0KEdPTERfQkNTX3Byb3BvcnRpb25zKVxuXG5CQ1NfcHJvcG9ydGlvbl9HT0xEIDwtIGdncGxvdChkYXRhPUdPTERfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgK1xuICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PVxcaWRlbnRpdHlcXCwgcG9zaXRpb24gPSBcXGZpbGxcXCwgY29sb3VyID0gXFxibGFja1xcKSsgIFxuICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZCBTdGFyIEJlYWNoIFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzXFwsIHggPVxcbW9udGhcXCwgeSA9IFxcUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgXFwpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApKStcbiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkrXG5zY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gXFxCbHVlc1xcLCBkaXJlY3Rpb24gPSAtMSkrXG4gIGZhY2V0X3dyYXAofiB5ZWFyKVxuQkNTX3Byb3BvcnRpb25fR09MRFxuXG5cbiAgXG5wZGYocGFzdGUwKHBhdGggPSBcXExhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFwgLFxcL0dPTERfQkNTX3Byb3BvcnRpb24ucGRmXFwpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxucHJpbnQoQkNTX3Byb3BvcnRpb25fR09MRClcbmRldi5vZmYoKVxuYGBgXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5HT0xEX0JDU19wcm9wb3J0aW9uczwtIGRmX0dPTEQgJT4lXG4gIG11dGF0ZShjb25kaXRpb25fc2NvcmVfbnVtZXJpYyA9IGFzLm51bWVyaWMoY29uZGl0aW9uX3Njb3JlKSxjb25kaXRpb25fc2NvcmVfYmluID0gY2FzZV93aGVuKGNvbmRpdGlvbl9zY29yZSA9PSAxIH4gXFwxXFwsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH5cXDJcXCxjb25kaXRpb25fc2NvcmUgPT0gMyB+IFxcM1xcLCBjb25kaXRpb25fc2NvcmUgPT0gNCB+XFw0XFwsY29uZGl0aW9uX3Njb3JlID09IDUgfiBcXDVcXCwgY29uZGl0aW9uX3Njb3JlID09IDYgflxcNlxcLGNvbmRpdGlvbl9zY29yZSA9PSA3IH4gXFw3XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH5cXDhcXCwgY29uZGl0aW9uX3Njb3JlID09OSB+XFw5XFwsIFRSVUUgfiBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uX3Njb3JlKSkpICU+JVxuICBncm91cF9ieShzaXRlLCBtb250aCwgeWVhciwgY29uZGl0aW9uX3Njb3JlX2JpbikgJT4lIGRwbHlyOjpzdW1tYXJpc2UoQ291bnQ9IG4oKSkgJT4lXG4gIHVuZ3JvdXAoKSAlPiVcbiAgbXV0YXRlKFByb3BvcnRpb24gPSBDb3VudC9zdW0oQ291bnQpKVxuXG5HT0xEX0JDU19wcm9wb3J0aW9uczwtIG5hLm9taXQoR09MRF9CQ1NfcHJvcG9ydGlvbnMpXG5cbkJDU19wcm9wb3J0aW9uX0dPTEQgPC0gZ2dwbG90KGRhdGE9R09MRF9CQ1NfcHJvcG9ydGlvbnMsIGFlcyh4PW1vbnRoLCB5PSBQcm9wb3J0aW9uLCBmaWxsPWNvbmRpdGlvbl9zY29yZV9iaW4pKSArXG4gIGdlb21fYmFyKHdpZHRoID0gLjUsIHN0YXQ9XFxpZGVudGl0eVxcLCBwb3NpdGlvbiA9IFxcZmlsbFxcLCBjb2xvdXIgPSBcXGJsYWNrXFwpKyAgXG4gICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XFxHb2xkIFN0YXIgQmVhY2ggUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXNcXCwgeCA9XFxtb250aFxcLCB5ID0gXFxQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyBcXCkrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCkpK1xuICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKStcbnNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSBcXEJsdWVzXFwsIGRpcmVjdGlvbiA9IC0xKStcbiAgZmFjZXRfd3JhcCh+IHllYXIpXG5CQ1NfcHJvcG9ydGlvbl9HT0xEXG5cblxuICBcbnBkZihwYXN0ZTAocGF0aCA9IFxcTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXRcXCAsXFwvR09MRF9CQ1NfcHJvcG9ydGlvbi5wZGZcXCksIGhlaWdodCA9IDcsIHdpZHRoID0gMTMpXG5wcmludChCQ1NfcHJvcG9ydGlvbl9HT0xEKVxuZGV2Lm9mZigpXG5gYGBcbmBgYCJ9 -->

```r
```r

GOLD_BCS_proportions<- df_GOLD %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ \1\, condition_score == 2 ~\2\,condition_score == 3 ~ \3\, condition_score == 4 ~\4\,condition_score == 5 ~ \5\, condition_score == 6 ~\6\,condition_score == 7 ~ \7\, condition_score == 8 ~\8\, condition_score ==9 ~\9\, TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, year, condition_score_bin) %>% dplyr::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))

GOLD_BCS_proportions<- na.omit(GOLD_BCS_proportions)

BCS_proportion_GOLD <- ggplot(data=GOLD_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\, colour = \black\)+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title=\Gold Star Beach Proportion of body condition scores\, x =\month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))+
scale_fill_brewer(palette = \Blues\, direction = -1)+
  facet_wrap(~ year)
BCS_proportion_GOLD


  
pdf(paste0(path = \Lab_Data_TissueProcessing/output\ ,\/GOLD_BCS_proportion.pdf\), height = 7, width = 13)
print(BCS_proportion_GOLD)
dev.off()
```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


# % of scores >3 at gold june - november 

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVaR1pmUjA5TVJGeHVYRzVIVDB4RVgzQnlaV05sYm5SZlozSmxZWFJsY2w4eklEd3RJR1JtWDBkUFRFUWdKVDRsWEc0Z0lHUndiSGx5T2pwbmNtOTFjRjlpZVNodGIyNTBhQ3dnYzJsMFpTd2dlV1ZoY2lrZ0pUNGxYRzRnSUdSd2JIbHlPanB6ZFcxdFlYSnBjMlVvVUdWeVkyVnVkR0ZuWlNBOUlHMWxZVzRvWTI5dVpHbDBhVzl1WDNOamIzSmxJRHc5SURNcEtqRXdNQ2xjYmtkUFRFUmZjSEpsWTJWdWRGOW5jbVZoZEdWeVh6TmNibHh1UjA5TVJGOUNRMU5mY0dWeVkyVnVkR0ZuWlNBOExTQkhUMHhFWDNCeVpXTmxiblJmWjNKbFlYUmxjbDh6SUNVK0pWeHVJQ0JuWjNCc2IzUW9ZV1Z6S0hnZ1BTQnRiMjUwYUN3Z2VTQTlJRkJsY21ObGJuUmhaMlVwS1NBclhHNGdJQ05uWlc5dFgySmhjaWgzYVdSMGFDQTlJREF1TlN3Z2MzUmhkQ0E5SUZ3aWFXUmxiblJwZEhsY0lpd2djRzl6YVhScGIyNGdQU0JjSW1acGJHeGNJaWtnSzF4dUlDQWdJR2RsYjIxZlkyOXNLQ2tyWEc0Z0lIUm9aVzFsWDJKM0tDa2dLMXh1SUNCMGFHVnRaU2hjYmlBZ0lDQndZVzVsYkM1bmNtbGtMbTFoYW05eUlEMGdaV3hsYldWdWRGOWliR0Z1YXlncExGeHVJQ0FnSUhCaGJtVnNMbWR5YVdRdWJXbHViM0lnUFNCbGJHVnRaVzUwWDJKc1lXNXJLQ2tzWEc0Z0lDQWdZWGhwY3k1MFpYaDBMbmdnUFNCbGJHVnRaVzUwWDNSbGVIUW9ZVzVuYkdVZ1BTQTBOU3dnZG1wMWMzUWdQU0F4TENCb2FuVnpkQ0E5SURFcExGeHVJQ0FnSUdGNGFYTXVkR2wwYkdVdWVTQTlJR1ZzWlcxbGJuUmZkR1Y0ZENoemFYcGxJRDBnY21Wc0tERXVNeWtzSUdGdVoyeGxJRDBnT1RBcExGeHVJQ0FnSUdGNGFYTXVkR2wwYkdVdWVDQTlJR1ZzWlcxbGJuUmZkR1Y0ZENoemFYcGxJRDBnY21Wc0tERXVNeWtzSUdGdVoyeGxJRDBnTUNrc1hHNGdJQ0FnWVhocGN5NTBaWGgwSUQwZ1pXeGxiV1Z1ZEY5MFpYaDBLSE5wZW1VZ1BTQXhNaWxjYmlBZ0tTQXJYRzRnSUd4aFluTW9YRzRnSUNBZ2RHbDBiR1VnUFNCY0lrZHZiR1FnVTNSaGNpQkNaV0ZqYUNBbElHOW1JR0p2WkhrZ1kyOXVaR2wwYVc5dUlITmpiM0psY3lBK1BTQXpYQ0lzWEc0Z0lDQWdlQ0E5SUZ3aWJXOXVkR2hjSWl4Y2JpQWdJQ0I1SUQwZ1hDSlFaWEpqWlc1MFlXZGxJRzltSUdKdlpIa2dZMjl1WkdsMGFXOXVJSE5qYjNKbGN5QStQU0F6WENKY2JpQWdLU0FyWm1GalpYUmZkM0poY0NoK2VXVmhjaWxjYmlBZ0l5c2djMk5oYkdWZmVGOWpiMjUwYVc1MWIzVnpLQ0JpY21WaGEzTWdQU0J6WlhFb05Td3hNaXdnWW5rZ1BURXBJQ2tyWEc0Z0lDTjViR2x0S0RBc05qQXBLeUJjYmlBZ0kzTmpZV3hsWDNsZlkyOXVkR2x1ZFc5MWN5aHNhVzFwZEhNZ1BTQmpLREFzTVRBd0tTd2dZbkpsWVd0eklEMGdjMlZ4S0RBc01UQXdMQ0JpZVNBOUlERXdLU2tnWEc1Y2JpQWdJQ0JjYmtkUFRFUmZRa05UWDNCbGNtTmxiblJoWjJWY2JseHVjR1JtS0hCaGMzUmxNQ2h3WVhSb0lEMGdYQ0pNWVdKZlJHRjBZVjlVYVhOemRXVlFjbTlqWlhOemFXNW5MMjkxZEhCMWRGd2lMQ0JjSWk5SFQweEVYMEpEVTE5d1pYSmpaVzUwWVdkbExuQmtabHdpS1N4b1pXbG5hSFFnUFNBM0xDQjNhV1IwYUNBOUlERXpLVnh1Y0hKcGJuUW9SMDlNUkY5Q1ExTmZjR1Z5WTJWdWRHRm5aU2xjYm1SbGRpNXZabVlvS1NCY2JseHVYRzVjYm1CZ1lDSjkgLS0+XG5cbmBgYHJcbmRmX0dPTERcblxuR09MRF9wcmVjZW50X2dyZWF0ZXJfMyA8LSBkZl9HT0xEICU+JVxuICBkcGx5cjo6Z3JvdXBfYnkobW9udGgsIHNpdGUsIHllYXIpICU+JVxuICBkcGx5cjo6c3VtbWFyaXNlKFBlcmNlbnRhZ2UgPSBtZWFuKGNvbmRpdGlvbl9zY29yZSA8PSAzKSoxMDApXG5HT0xEX3ByZWNlbnRfZ3JlYXRlcl8zXG5cbkdPTERfQkNTX3BlcmNlbnRhZ2UgPC0gR09MRF9wcmVjZW50X2dyZWF0ZXJfMyAlPiVcbiAgZ2dwbG90KGFlcyh4ID0gbW9udGgsIHkgPSBQZXJjZW50YWdlKSkgK1xuICAjZ2VvbV9iYXIod2lkdGggPSAwLjUsIHN0YXQgPSBcXGlkZW50aXR5XFwsIHBvc2l0aW9uID0gXFxmaWxsXFwpICtcbiAgICBnZW9tX2NvbCgpK1xuICB0aGVtZV9idygpICtcbiAgdGhlbWUoXG4gICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSxcbiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLFxuICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3QgPSAxKSxcbiAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDkwKSxcbiAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApLFxuICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpXG4gICkgK1xuICBsYWJzKFxuICAgIHRpdGxlID0gXFxHb2xkIFN0YXIgQmVhY2ggJSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gM1xcLFxuICAgIHggPSBcXG1vbnRoXFwsXG4gICAgeSA9IFxcUGVyY2VudGFnZSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gM1xcXG4gICkgK2ZhY2V0X3dyYXAofnllYXIpXG4gICMrIHNjYWxlX3hfY29udGludW91cyggYnJlYWtzID0gc2VxKDUsMTIsIGJ5ID0xKSApK1xuICAjeWxpbSgwLDYwKSsgXG4gICNzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEwMCksIGJyZWFrcyA9IHNlcSgwLDEwMCwgYnkgPSAxMCkpIFxuXG4gICAgXG5HT0xEX0JDU19wZXJjZW50YWdlXG5cbnBkZihwYXN0ZTAocGF0aCA9IFxcTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXRcXCwgXFwvR09MRF9CQ1NfcGVyY2VudGFnZS5wZGZcXCksaGVpZ2h0ID0gNywgd2lkdGggPSAxMylcbnByaW50KEdPTERfQkNTX3BlcmNlbnRhZ2UpXG5kZXYub2ZmKCkgXG5cblxuXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
df_GOLD

GOLD_precent_greater_3 <- df_GOLD %>%
  dplyr::group_by(month, site, year) %>%
  dplyr::summarise(Percentage = mean(condition_score <= 3)*100)
GOLD_precent_greater_3

GOLD_BCS_percentage <- GOLD_precent_greater_3 %>%
  ggplot(aes(x = month, y = Percentage)) +
  #geom_bar(width = 0.5, stat = \identity\, position = \fill\) +
    geom_col()+
  theme_bw() +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    axis.title.y = element_text(size = rel(1.3), angle = 90),
    axis.title.x = element_text(size = rel(1.3), angle = 0),
    axis.text = element_text(size = 12)
  ) +
  labs(
    title = \Gold Star Beach % of body condition scores >= 3\,
    x = \month\,
    y = \Percentage of body condition scores >= 3\
  ) +facet_wrap(~year)
  #+ scale_x_continuous( breaks = seq(5,12, by =1) )+
  #ylim(0,60)+ 
  #scale_y_continuous(limits = c(0,100), breaks = seq(0,100, by = 10)) 

    
GOLD_BCS_percentage

pdf(paste0(path = \Lab_Data_TissueProcessing/output\, \/GOLD_BCS_percentage.pdf\),height = 7, width = 13)
print(GOLD_BCS_percentage)
dev.off() 



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVpHWmZSMDlNUkZ4dVhHNUhUMHhFWDNCeVpXTmxiblJmWjNKbFlYUmxjbDh6SUR3dElHUm1YMGRQVEVRZ0pUNGxYRzRnSUdSd2JIbHlPanBuY205MWNGOWllU2h0YjI1MGFDd2djMmwwWlN3Z2VXVmhjaWtnSlQ0bFhHNGdJR1J3YkhseU9qcHpkVzF0WVhKcGMyVW9VR1Z5WTJWdWRHRm5aU0E5SUcxbFlXNG9ZMjl1WkdsMGFXOXVYM05qYjNKbElEdzlJRE1wS2pFd01DbGNia2RQVEVSZmNISmxZMlZ1ZEY5bmNtVmhkR1Z5WHpOY2JseHVSMDlNUkY5Q1ExTmZjR1Z5WTJWdWRHRm5aU0E4TFNCSFQweEVYM0J5WldObGJuUmZaM0psWVhSbGNsOHpJQ1UrSlZ4dUlDQm5aM0JzYjNRb1lXVnpLSGdnUFNCdGIyNTBhQ3dnZVNBOUlGQmxjbU5sYm5SaFoyVXBLU0FyWEc0Z0lDTm5aVzl0WDJKaGNpaDNhV1IwYUNBOUlEQXVOU3dnYzNSaGRDQTlJRnhjYVdSbGJuUnBkSGxjWEN3Z2NHOXphWFJwYjI0Z1BTQmNYR1pwYkd4Y1hDa2dLMXh1SUNBZ0lHZGxiMjFmWTI5c0tDa3JYRzRnSUhSb1pXMWxYMkozS0NrZ0sxeHVJQ0IwYUdWdFpTaGNiaUFnSUNCd1lXNWxiQzVuY21sa0xtMWhhbTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwTEZ4dUlDQWdJSEJoYm1Wc0xtZHlhV1F1YldsdWIzSWdQU0JsYkdWdFpXNTBYMkpzWVc1cktDa3NYRzRnSUNBZ1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBME5Td2dkbXAxYzNRZ1BTQXhMQ0JvYW5WemRDQTlJREVwTEZ4dUlDQWdJR0Y0YVhNdWRHbDBiR1V1ZVNBOUlHVnNaVzFsYm5SZmRHVjRkQ2h6YVhwbElEMGdjbVZzS0RFdU15a3NJR0Z1WjJ4bElEMGdPVEFwTEZ4dUlDQWdJR0Y0YVhNdWRHbDBiR1V1ZUNBOUlHVnNaVzFsYm5SZmRHVjRkQ2h6YVhwbElEMGdjbVZzS0RFdU15a3NJR0Z1WjJ4bElEMGdNQ2tzWEc0Z0lDQWdZWGhwY3k1MFpYaDBJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNBeE1pbGNiaUFnS1NBclhHNGdJR3hoWW5Nb1hHNGdJQ0FnZEdsMGJHVWdQU0JjWEVkdmJHUWdVM1JoY2lCQ1pXRmphQ0FsSUc5bUlHSnZaSGtnWTI5dVpHbDBhVzl1SUhOamIzSmxjeUErUFNBelhGd3NYRzRnSUNBZ2VDQTlJRnhjYlc5dWRHaGNYQ3hjYmlBZ0lDQjVJRDBnWEZ4UVpYSmpaVzUwWVdkbElHOW1JR0p2WkhrZ1kyOXVaR2wwYVc5dUlITmpiM0psY3lBK1BTQXpYRnhjYmlBZ0tTQXJabUZqWlhSZmQzSmhjQ2grZVdWaGNpbGNiaUFnSXlzZ2MyTmhiR1ZmZUY5amIyNTBhVzUxYjNWektDQmljbVZoYTNNZ1BTQnpaWEVvTlN3eE1pd2dZbmtnUFRFcElDa3JYRzRnSUNONWJHbHRLREFzTmpBcEt5QmNiaUFnSTNOallXeGxYM2xmWTI5dWRHbHVkVzkxY3loc2FXMXBkSE1nUFNCaktEQXNNVEF3S1N3Z1luSmxZV3R6SUQwZ2MyVnhLREFzTVRBd0xDQmllU0E5SURFd0tTa2dYRzVjYmlBZ0lDQmNia2RQVEVSZlFrTlRYM0JsY21ObGJuUmhaMlZjYmx4dWNHUm1LSEJoYzNSbE1DaHdZWFJvSUQwZ1hGeE1ZV0pmUkdGMFlWOVVhWE56ZFdWUWNtOWpaWE56YVc1bkwyOTFkSEIxZEZ4Y0xDQmNYQzlIVDB4RVgwSkRVMTl3WlhKalpXNTBZV2RsTG5Ca1pseGNLU3hvWldsbmFIUWdQU0EzTENCM2FXUjBhQ0E5SURFektWeHVjSEpwYm5Rb1IwOU1SRjlDUTFOZmNHVnlZMlZ1ZEdGblpTbGNibVJsZGk1dlptWW9LU0JjYmx4dVhHNWNibUJnWUZ4dVlHQmdJbjA9IC0tPlxuXG5gYGByXG5gYGByXG5kZl9HT0xEXG5cbkdPTERfcHJlY2VudF9ncmVhdGVyXzMgPC0gZGZfR09MRCAlPiVcbiAgZHBseXI6Omdyb3VwX2J5KG1vbnRoLCBzaXRlLCB5ZWFyKSAlPiVcbiAgZHBseXI6OnN1bW1hcmlzZShQZXJjZW50YWdlID0gbWVhbihjb25kaXRpb25fc2NvcmUgPD0gMykqMTAwKVxuR09MRF9wcmVjZW50X2dyZWF0ZXJfM1xuXG5HT0xEX0JDU19wZXJjZW50YWdlIDwtIEdPTERfcHJlY2VudF9ncmVhdGVyXzMgJT4lXG4gIGdncGxvdChhZXMoeCA9IG1vbnRoLCB5ID0gUGVyY2VudGFnZSkpICtcbiAgI2dlb21fYmFyKHdpZHRoID0gMC41LCBzdGF0ID0gXFxpZGVudGl0eVxcLCBwb3NpdGlvbiA9IFxcZmlsbFxcKSArXG4gICAgZ2VvbV9jb2woKStcbiAgdGhlbWVfYncoKSArXG4gIHRoZW1lKFxuICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksXG4gICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSxcbiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0ID0gMSksXG4gICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSA5MCksXG4gICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSxcbiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKVxuICApICtcbiAgbGFicyhcbiAgICB0aXRsZSA9IFxcR29sZCBTdGFyIEJlYWNoICUgb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDNcXCxcbiAgICB4ID0gXFxtb250aFxcLFxuICAgIHkgPSBcXFBlcmNlbnRhZ2Ugb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDNcXFxuICApICtmYWNldF93cmFwKH55ZWFyKVxuICAjKyBzY2FsZV94X2NvbnRpbnVvdXMoIGJyZWFrcyA9IHNlcSg1LDEyLCBieSA9MSkgKStcbiAgI3lsaW0oMCw2MCkrIFxuICAjc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxMDApLCBicmVha3MgPSBzZXEoMCwxMDAsIGJ5ID0gMTApKSBcblxuICAgIFxuR09MRF9CQ1NfcGVyY2VudGFnZVxuXG5wZGYocGFzdGUwKHBhdGggPSBcXExhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFwsIFxcL0dPTERfQkNTX3BlcmNlbnRhZ2UucGRmXFwpLGhlaWdodCA9IDcsIHdpZHRoID0gMTMpXG5wcmludChHT0xEX0JDU19wZXJjZW50YWdlKVxuZGV2Lm9mZigpIFxuXG5cblxuYGBgXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZGZfR09MRFxuXG5HT0xEX3ByZWNlbnRfZ3JlYXRlcl8zIDwtIGRmX0dPTEQgJT4lXG4gIGRwbHlyOjpncm91cF9ieShtb250aCwgc2l0ZSwgeWVhcikgJT4lXG4gIGRwbHlyOjpzdW1tYXJpc2UoUGVyY2VudGFnZSA9IG1lYW4oY29uZGl0aW9uX3Njb3JlIDw9IDMpKjEwMClcbkdPTERfcHJlY2VudF9ncmVhdGVyXzNcblxuR09MRF9CQ1NfcGVyY2VudGFnZSA8LSBHT0xEX3ByZWNlbnRfZ3JlYXRlcl8zICU+JVxuICBnZ3Bsb3QoYWVzKHggPSBtb250aCwgeSA9IFBlcmNlbnRhZ2UpKSArXG4gICNnZW9tX2Jhcih3aWR0aCA9IDAuNSwgc3RhdCA9IFxcaWRlbnRpdHlcXCwgcG9zaXRpb24gPSBcXGZpbGxcXCkgK1xuICAgIGdlb21fY29sKCkrXG4gIHRoZW1lX2J3KCkgK1xuICB0aGVtZShcbiAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLFxuICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksXG4gICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdCA9IDEpLFxuICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gOTApLFxuICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCksXG4gICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMilcbiAgKSArXG4gIGxhYnMoXG4gICAgdGl0bGUgPSBcXEdvbGQgU3RhciBCZWFjaCAlIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyA+PSAzXFwsXG4gICAgeCA9IFxcbW9udGhcXCxcbiAgICB5ID0gXFxQZXJjZW50YWdlIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyA+PSAzXFxcbiAgKSArZmFjZXRfd3JhcCh+eWVhcilcbiAgIysgc2NhbGVfeF9jb250aW51b3VzKCBicmVha3MgPSBzZXEoNSwxMiwgYnkgPTEpICkrXG4gICN5bGltKDAsNjApKyBcbiAgI3NjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTAwKSwgYnJlYWtzID0gc2VxKDAsMTAwLCBieSA9IDEwKSkgXG5cbiAgICBcbkdPTERfQkNTX3BlcmNlbnRhZ2VcblxucGRmKHBhc3RlMChwYXRoID0gXFxMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dFxcLCBcXC9HT0xEX0JDU19wZXJjZW50YWdlLnBkZlxcKSxoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxucHJpbnQoR09MRF9CQ1NfcGVyY2VudGFnZSlcbmRldi5vZmYoKSBcblxuXG5cbmBgYFxuYGBgIn0= -->

```r
```r
df_GOLD

GOLD_precent_greater_3 <- df_GOLD %>%
  dplyr::group_by(month, site, year) %>%
  dplyr::summarise(Percentage = mean(condition_score <= 3)*100)
GOLD_precent_greater_3

GOLD_BCS_percentage <- GOLD_precent_greater_3 %>%
  ggplot(aes(x = month, y = Percentage)) +
  #geom_bar(width = 0.5, stat = \identity\, position = \fill\) +
    geom_col()+
  theme_bw() +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    axis.title.y = element_text(size = rel(1.3), angle = 90),
    axis.title.x = element_text(size = rel(1.3), angle = 0),
    axis.text = element_text(size = 12)
  ) +
  labs(
    title = \Gold Star Beach % of body condition scores >= 3\,
    x = \month\,
    y = \Percentage of body condition scores >= 3\
  ) +facet_wrap(~year)
  #+ scale_x_continuous( breaks = seq(5,12, by =1) )+
  #ylim(0,60)+ 
  #scale_y_continuous(limits = c(0,100), breaks = seq(0,100, by = 10)) 

    
GOLD_BCS_percentage

pdf(paste0(path = \Lab_Data_TissueProcessing/output\, \/GOLD_BCS_percentage.pdf\),height = 7, width = 13)
print(GOLD_BCS_percentage)
dev.off() 

```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVaMmR3Ykc5MEtHUmhkR0U5WkdaZlIwOU1SQ3dnWVdWektIZzliVzl1ZEdnc0lIazlhR1ZwWjJoMFgyMXRMQ0JuY205MWNEMGdiVzl1ZEdncEtTQXJYRzRnSUdkbGIyMWZZbTk0Y0d4dmRDZ3BLeUFnSTNOallXeGxYMlpwYkd4ZmJXRnVkV0ZzS0haaGJIVmxjejFqS0Z3aVptOXlaWE4wWjNKbFpXNWNJaXhjSW05eVlXNW5aVndpTENCY0luQjFjbkJzWlZ3aUtTa3JYRzRnSUhSb1pXMWxYMkozS0NrZ0t5QWdkR2hsYldVb2NHRnVaV3d1WjNKcFpDNXRZV3B2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1N3Z2NHRnVaV3d1WjNKcFpDNXRhVzV2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1NrcklGeHVJQ0FqZEdobGJXVW9ZWGhwY3k1MFpYaDBMbmdnUFNCbGJHVnRaVzUwWDNSbGVIUW9ZVzVuYkdVZ1BTQTVNQ3dnZG1wMWMzUWdQU0F3TGpVc0lHaHFkWE4wUFRFcEtTdGNiaUFnYkdGaWN5aDBhWFJzWlQxY0lrZHZiR1J6ZEdGeUlFSmxZV05vSUUxbFlXNGdVMmhsYkd3Z1NHVnBaMmgwSUZ3aUxDQjRJRDFjSW0xdmJuUm9YQ0lzSUhrZ1BTQmNJazFsWVc0Z1UyaGxiR3dnU0dWcFoyaDBJQ2h0YlNsY0lpa2dLeUFqYzJOaGJHVmZlRjlqYjI1MGFXNTFiM1Z6S0d4cGJXbDBjejBnWXlnMExERXhLU3dnWW5KbFlXdHpJRDBnYzJWeEtEVXNNVEFzSUdKNUlEMHhLU2tyWEc0Z0lHZGxiMjFmYzIxdmIzUm9LRzFsZEdodlpDQTlJRndpYkcxY0lpd2djMlVnUFNCR1FVeFRSU2tySUdaaFkyVjBYM2R5WVhBb2ZubGxZWElwWEc1Y2JtQmdZQ0o5IC0tPlxuXG5gYGByXG5nZ3Bsb3QoZGF0YT1kZl9HT0xELCBhZXMoeD1tb250aCwgeT1oZWlnaHRfbW0sIGdyb3VwPSBtb250aCkpICtcbiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZHN0YXIgQmVhY2ggTWVhbiBTaGVsbCBIZWlnaHQgXFwsIHggPVxcbW9udGhcXCwgeSA9IFxcTWVhbiBTaGVsbCBIZWlnaHQgKG1tKVxcKSArICNzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzPSBjKDQsMTEpLCBicmVha3MgPSBzZXEoNSwxMCwgYnkgPTEpKStcbiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gXFxsbVxcLCBzZSA9IEZBTFNFKSsgZmFjZXRfd3JhcCh+eWVhcilcblxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->
ggplot(data=df_GOLD, aes(x=month, y=height_mm, group= month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Goldstar Beach Mean Shell Height \, x =\month\, y = \Mean Shell Height (mm)\) + #scale_x_continuous(limits= c(4,11), breaks = seq(5,10, by =1))+
  geom_smooth(method = \lm\, se = FALSE)+ facet_wrap(~year)



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVoyZHdiRzkwS0dSaGRHRTlaR1pmUjA5TVJDd2dZV1Z6S0hnOWJXOXVkR2dzSUhrOWFHVnBaMmgwWDIxdExDQm5jbTkxY0QwZ2JXOXVkR2dwS1NBclhHNGdJR2RsYjIxZlltOTRjR3h2ZENncEt5QWdJM05qWVd4bFgyWnBiR3hmYldGdWRXRnNLSFpoYkhWbGN6MWpLRnhjWm05eVpYTjBaM0psWlc1Y1hDeGNYRzl5WVc1blpWeGNMQ0JjWEhCMWNuQnNaVnhjS1NrclhHNGdJSFJvWlcxbFgySjNLQ2tnS3lBZ2RHaGxiV1VvY0dGdVpXd3VaM0pwWkM1dFlXcHZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU3dnY0dGdVpXd3VaM0pwWkM1dGFXNXZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU2tySUZ4dUlDQWpkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBNU1Dd2dkbXAxYzNRZ1BTQXdMalVzSUdocWRYTjBQVEVwS1N0Y2JpQWdiR0ZpY3loMGFYUnNaVDFjWEVkdmJHUnpkR0Z5SUVKbFlXTm9JRTFsWVc0Z1UyaGxiR3dnU0dWcFoyaDBJRnhjTENCNElEMWNYRzF2Ym5Sb1hGd3NJSGtnUFNCY1hFMWxZVzRnVTJobGJHd2dTR1ZwWjJoMElDaHRiU2xjWENrZ0t5QWpjMk5oYkdWZmVGOWpiMjUwYVc1MWIzVnpLR3hwYldsMGN6MGdZeWcwTERFeEtTd2dZbkpsWVd0eklEMGdjMlZ4S0RVc01UQXNJR0o1SUQweEtTa3JYRzRnSUdkbGIyMWZjMjF2YjNSb0tHMWxkR2h2WkNBOUlGeGNiRzFjWEN3Z2MyVWdQU0JHUVV4VFJTa3JJR1poWTJWMFgzZHlZWEFvZm5sbFlYSXBYRzVjYm1CZ1lGeHVZR0JnSW4wPSAtLT5cblxuYGBgclxuYGBgclxuZ2dwbG90KGRhdGE9ZGZfR09MRCwgYWVzKHg9bW9udGgsIHk9aGVpZ2h0X21tLCBncm91cD0gbW9udGgpKSArXG4gIGdlb21fYm94cGxvdCgpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXEdvbGRzdGFyIEJlYWNoIE1lYW4gU2hlbGwgSGVpZ2h0IFxcLCB4ID1cXG1vbnRoXFwsIHkgPSBcXE1lYW4gU2hlbGwgSGVpZ2h0IChtbSlcXCkgKyAjc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cz0gYyg0LDExKSwgYnJlYWtzID0gc2VxKDUsMTAsIGJ5ID0xKSkrXG4gIGdlb21fc21vb3RoKG1ldGhvZCA9IFxcbG1cXCwgc2UgPSBGQUxTRSkrIGZhY2V0X3dyYXAofnllYXIpXG5cbmBgYFxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZ2dwbG90KGRhdGE9ZGZfR09MRCwgYWVzKHg9bW9udGgsIHk9aGVpZ2h0X21tLCBncm91cD0gbW9udGgpKSArXG4gIGdlb21fYm94cGxvdCgpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXEdvbGRzdGFyIEJlYWNoIE1lYW4gU2hlbGwgSGVpZ2h0IFxcLCB4ID1cXG1vbnRoXFwsIHkgPSBcXE1lYW4gU2hlbGwgSGVpZ2h0IChtbSlcXCkgKyAjc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cz0gYyg0LDExKSwgYnJlYWtzID0gc2VxKDUsMTAsIGJ5ID0xKSkrXG4gIGdlb21fc21vb3RoKG1ldGhvZCA9IFxcbG1cXCwgc2UgPSBGQUxTRSkrIGZhY2V0X3dyYXAofnllYXIpXG5cbmBgYFxuYGBgIn0= -->

```r
```r
ggplot(data=df_GOLD, aes(x=month, y=height_mm, group= month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Goldstar Beach Mean Shell Height \, x =\month\, y = \Mean Shell Height (mm)\) + #scale_x_continuous(limits= c(4,11), breaks = seq(5,10, by =1))+
  geom_smooth(method = \lm\, se = FALSE)+ facet_wrap(~year)

```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJME52Ym1ScGRHbHZiaUJrYVhOMGNtbGlkWFJwYjI0Z1lXTnliM056SUdGc2JDQnpZVzF3YkdVZ2JXOXVkR2h6SUMwZ01qQXlNMXh1WjJkd2JHOTBLR1JoZEdFOVpHWmZSMDlNUkRJd01qTXNJR0ZsY3loNFBTQmpiMjVrYVhScGIyNHBLU0FyWEc0Z0lHZGxiMjFmWW1GeUtDa3JJQ0FqYzJOaGJHVmZabWxzYkY5dFlXNTFZV3dvZG1Gc2RXVnpQV01vWENKbWIzSmxjM1JuY21WbGJsd2lMRndpYjNKaGJtZGxYQ0lzSUZ3aWNIVnljR3hsWENJcEtTdGNiaUFnZEdobGJXVmZZbmNvS1NBcklDQjBhR1Z0WlNod1lXNWxiQzVuY21sa0xtMWhhbTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwTENCd1lXNWxiQzVuY21sa0xtMXBibTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwS1NzZ1hHNGdJQ04wYUdWdFpTaGhlR2x6TG5SbGVIUXVlQ0E5SUdWc1pXMWxiblJmZEdWNGRDaGhibWRzWlNBOUlEa3dMQ0IyYW5WemRDQTlJREF1TlN3Z2FHcDFjM1E5TVNrcEsxeHVJQ0JzWVdKektIUnBkR3hsUFZ3aVIyOXNaSE4wWVhJZ1FtVmhZMmdnSUVKdlpIa2dRMjl1WkdsMGFXOXVJRk5qYjNKbElDMGdNakF5TXlCY0lpd2dlQ0E5WENKRGIyNWthWFJwYjI0Z1kyRjBaV2R2Y21sNllYUnBiMjVjSWlrclhHNGdJQ0FnWm1GalpYUmZkM0poY0NoK0lHMXZiblJvTENCelkyRnNaWE1nUFNCY0ltWnlaV1ZjSWlsY2JseHVJME52Ym1ScGRHbHZiaUJrYVhOMGNtbGlkWFJwYjI0Z1lXTnliM056SUdGc2JDQnpZVzF3YkdVZ2JXOXVkR2h6SUMwZ01qQXlORnh1WjJkd2JHOTBLR1JoZEdFOVpHWmZSMDlNUkRJd01qUXNJR0ZsY3loNFBTQmpiMjVrYVhScGIyNHBLU0FyWEc0Z0lHZGxiMjFmWW1GeUtDa3JJQ0FqYzJOaGJHVmZabWxzYkY5dFlXNTFZV3dvZG1Gc2RXVnpQV01vWENKbWIzSmxjM1JuY21WbGJsd2lMRndpYjNKaGJtZGxYQ0lzSUZ3aWNIVnljR3hsWENJcEtTdGNiaUFnZEdobGJXVmZZbmNvS1NBcklDQjBhR1Z0WlNod1lXNWxiQzVuY21sa0xtMWhhbTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwTENCd1lXNWxiQzVuY21sa0xtMXBibTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwS1NzZ1hHNGdJQ04wYUdWdFpTaGhlR2x6TG5SbGVIUXVlQ0E5SUdWc1pXMWxiblJmZEdWNGRDaGhibWRzWlNBOUlEa3dMQ0IyYW5WemRDQTlJREF1TlN3Z2FHcDFjM1E5TVNrcEsxeHVJQ0JzWVdKektIUnBkR3hsUFZ3aVIyOXNaSE4wWVhJZ1FtVmhZMmdnSUVKdlpIa2dRMjl1WkdsMGFXOXVJRk5qYjNKbElDMGdNakF5TkZ3aUxDQjRJRDFjSWtOdmJtUnBkR2x2YmlCallYUmxaMjl5YVhwaGRHbHZibHdpS1N0Y2JpQWdJQ0JtWVdObGRGOTNjbUZ3S0g0Z2JXOXVkR2dzSUhOallXeGxjeUE5SUZ3aVpuSmxaVndpS1Z4dVhHNGpUV1ZoYmlCQ2IyUjVJR052Ym1ScGRHbHZiaUJ3WlhJZ2JXOXVkR2hjYm1kbmNHeHZkQ2hrWVhSaFBXUm1YMGRQVEVRc0lHRmxjeWg0UFNCdGIyNTBhQ3dnZVQwZ1kyOXVaR2wwYVc5dVgzTmpiM0psTENCbmNtOTFjQ0E5SUcxdmJuUm9LU2tnSzF4dUlDQm5aVzl0WDJKdmVIQnNiM1FvS1NzZ0lDTnpZMkZzWlY5bWFXeHNYMjFoYm5WaGJDaDJZV3gxWlhNOVl5aGNJbVp2Y21WemRHZHlaV1Z1WENJc1hDSnZjbUZ1WjJWY0lpd2dYQ0p3ZFhKd2JHVmNJaWtwSzF4dUlDQjBhR1Z0WlY5aWR5Z3BJQ3NnSUhSb1pXMWxLSEJoYm1Wc0xtZHlhV1F1YldGcWIzSWdQU0JsYkdWdFpXNTBYMkpzWVc1cktDa3NJSEJoYm1Wc0xtZHlhV1F1YldsdWIzSWdQU0JsYkdWdFpXNTBYMkpzWVc1cktDa3BLeUJjYmlBZ2JHRmljeWgwYVhSc1pUMWNJa2R2YkdSemRHRnlJRUpsWVdOb0lDQk5aV0Z1SUVKdlpIa2dRMjl1WkdsMGFXOXVJRk5qYjNKbElGd2lMQ0I0SUQxY0ltMXZiblJvWENJc0lIazlJRndpSUdOdmJtUnBkR2x2YmlCelkyOXlaU0FvTVMwNUtWd2lLU3NnYzJOaGJHVmZlVjl5WlhabGNuTmxLQ2tnS3lCbVlXTmxkRjkzY21Gd0tINTVaV0Z5S1Z4dUlDQWpkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBNU1Dd2dkbXAxYzNRZ1BTQXdMalVzSUdocWRYTjBQVEVwS1N0Y2JseHVZR0JnSW4wPSAtLT5cblxuYGBgclxuI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyM1xuZ2dwbG90KGRhdGE9ZGZfR09MRDIwMjMsIGFlcyh4PSBjb25kaXRpb24pKSArXG4gIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZHN0YXIgQmVhY2ggIEJvZHkgQ29uZGl0aW9uIFNjb3JlIC0gMjAyMyBcXCwgeCA9XFxDb25kaXRpb24gY2F0ZWdvcml6YXRpb25cXCkrXG4gICAgZmFjZXRfd3JhcCh+IG1vbnRoLCBzY2FsZXMgPSBcXGZyZWVcXClcblxuI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyNFxuZ2dwbG90KGRhdGE9ZGZfR09MRDIwMjQsIGFlcyh4PSBjb25kaXRpb24pKSArXG4gIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZHN0YXIgQmVhY2ggIEJvZHkgQ29uZGl0aW9uIFNjb3JlIC0gMjAyNFxcLCB4ID1cXENvbmRpdGlvbiBjYXRlZ29yaXphdGlvblxcKStcbiAgICBmYWNldF93cmFwKH4gbW9udGgsIHNjYWxlcyA9IFxcZnJlZVxcKVxuXG4jTWVhbiBCb2R5IGNvbmRpdGlvbiBwZXIgbW9udGhcbmdncGxvdChkYXRhPWRmX0dPTEQsIGFlcyh4PSBtb250aCwgeT0gY29uZGl0aW9uX3Njb3JlLCBncm91cCA9IG1vbnRoKSkgK1xuICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YyhcXGZvcmVzdGdyZWVuXFwsXFxvcmFuZ2VcXCwgXFxwdXJwbGVcXCkpK1xuICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgbGFicyh0aXRsZT1cXEdvbGRzdGFyIEJlYWNoICBNZWFuIEJvZHkgQ29uZGl0aW9uIFNjb3JlIFxcLCB4ID1cXG1vbnRoXFwsIHk9IFxcIGNvbmRpdGlvbiBzY29yZSAoMS05KVxcKSsgc2NhbGVfeV9yZXZlcnNlKCkgKyBmYWNldF93cmFwKH55ZWFyKVxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcblxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->
#Condition distribution across all sample months - 2023
ggplot(data=df_GOLD2023, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Goldstar Beach  Body Condition Score - 2023 \, x =\Condition categorization\)+
    facet_wrap(~ month, scales = \free\)

#Condition distribution across all sample months - 2024
ggplot(data=df_GOLD2024, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Goldstar Beach  Body Condition Score - 2024\, x =\Condition categorization\)+
    facet_wrap(~ month, scales = \free\)

#Mean Body condition per month
ggplot(data=df_GOLD, aes(x= month, y= condition_score, group = month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  labs(title=\Goldstar Beach  Mean Body Condition Score \, x =\month\, y= \ condition score (1-9)\)+ scale_y_reverse() + facet_wrap(~year)
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dUkwTnZibVJwZEdsdmJpQmthWE4wY21saWRYUnBiMjRnWVdOeWIzTnpJR0ZzYkNCellXMXdiR1VnYlc5dWRHaHpJQzBnTWpBeU0xeHVaMmR3Ykc5MEtHUmhkR0U5WkdaZlIwOU1SREl3TWpNc0lHRmxjeWg0UFNCamIyNWthWFJwYjI0cEtTQXJYRzRnSUdkbGIyMWZZbUZ5S0NrcklDQWpjMk5oYkdWZlptbHNiRjl0WVc1MVlXd29kbUZzZFdWelBXTW9YRnhtYjNKbGMzUm5jbVZsYmx4Y0xGeGNiM0poYm1kbFhGd3NJRnhjY0hWeWNHeGxYRndwS1N0Y2JpQWdkR2hsYldWZlluY29LU0FySUNCMGFHVnRaU2h3WVc1bGJDNW5jbWxrTG0xaGFtOXlJRDBnWld4bGJXVnVkRjlpYkdGdWF5Z3BMQ0J3WVc1bGJDNW5jbWxrTG0xcGJtOXlJRDBnWld4bGJXVnVkRjlpYkdGdWF5Z3BLU3NnWEc0Z0lDTjBhR1Z0WlNoaGVHbHpMblJsZUhRdWVDQTlJR1ZzWlcxbGJuUmZkR1Y0ZENoaGJtZHNaU0E5SURrd0xDQjJhblZ6ZENBOUlEQXVOU3dnYUdwMWMzUTlNU2twSzF4dUlDQnNZV0p6S0hScGRHeGxQVnhjUjI5c1pITjBZWElnUW1WaFkyZ2dJRUp2WkhrZ1EyOXVaR2wwYVc5dUlGTmpiM0psSUMwZ01qQXlNeUJjWEN3Z2VDQTlYRnhEYjI1a2FYUnBiMjRnWTJGMFpXZHZjbWw2WVhScGIyNWNYQ2tyWEc0Z0lDQWdabUZqWlhSZmQzSmhjQ2grSUcxdmJuUm9MQ0J6WTJGc1pYTWdQU0JjWEdaeVpXVmNYQ2xjYmx4dUkwTnZibVJwZEdsdmJpQmthWE4wY21saWRYUnBiMjRnWVdOeWIzTnpJR0ZzYkNCellXMXdiR1VnYlc5dWRHaHpJQzBnTWpBeU5GeHVaMmR3Ykc5MEtHUmhkR0U5WkdaZlIwOU1SREl3TWpRc0lHRmxjeWg0UFNCamIyNWthWFJwYjI0cEtTQXJYRzRnSUdkbGIyMWZZbUZ5S0NrcklDQWpjMk5oYkdWZlptbHNiRjl0WVc1MVlXd29kbUZzZFdWelBXTW9YRnhtYjNKbGMzUm5jbVZsYmx4Y0xGeGNiM0poYm1kbFhGd3NJRnhjY0hWeWNHeGxYRndwS1N0Y2JpQWdkR2hsYldWZlluY29LU0FySUNCMGFHVnRaU2h3WVc1bGJDNW5jbWxrTG0xaGFtOXlJRDBnWld4bGJXVnVkRjlpYkdGdWF5Z3BMQ0J3WVc1bGJDNW5jbWxrTG0xcGJtOXlJRDBnWld4bGJXVnVkRjlpYkdGdWF5Z3BLU3NnWEc0Z0lDTjBhR1Z0WlNoaGVHbHpMblJsZUhRdWVDQTlJR1ZzWlcxbGJuUmZkR1Y0ZENoaGJtZHNaU0E5SURrd0xDQjJhblZ6ZENBOUlEQXVOU3dnYUdwMWMzUTlNU2twSzF4dUlDQnNZV0p6S0hScGRHeGxQVnhjUjI5c1pITjBZWElnUW1WaFkyZ2dJRUp2WkhrZ1EyOXVaR2wwYVc5dUlGTmpiM0psSUMwZ01qQXlORnhjTENCNElEMWNYRU52Ym1ScGRHbHZiaUJqWVhSbFoyOXlhWHBoZEdsdmJseGNLU3RjYmlBZ0lDQm1ZV05sZEY5M2NtRndLSDRnYlc5dWRHZ3NJSE5qWVd4bGN5QTlJRnhjWm5KbFpWeGNLVnh1WEc0alRXVmhiaUJDYjJSNUlHTnZibVJwZEdsdmJpQndaWElnYlc5dWRHaGNibWRuY0d4dmRDaGtZWFJoUFdSbVgwZFBURVFzSUdGbGN5aDRQU0J0YjI1MGFDd2dlVDBnWTI5dVpHbDBhVzl1WDNOamIzSmxMQ0JuY205MWNDQTlJRzF2Ym5Sb0tTa2dLMXh1SUNCblpXOXRYMkp2ZUhCc2IzUW9LU3NnSUNOelkyRnNaVjltYVd4c1gyMWhiblZoYkNoMllXeDFaWE05WXloY1hHWnZjbVZ6ZEdkeVpXVnVYRndzWEZ4dmNtRnVaMlZjWEN3Z1hGeHdkWEp3YkdWY1hDa3BLMXh1SUNCMGFHVnRaVjlpZHlncElDc2dJSFJvWlcxbEtIQmhibVZzTG1keWFXUXViV0ZxYjNJZ1BTQmxiR1Z0Wlc1MFgySnNZVzVyS0Nrc0lIQmhibVZzTG1keWFXUXViV2x1YjNJZ1BTQmxiR1Z0Wlc1MFgySnNZVzVyS0NrcEt5QmNiaUFnYkdGaWN5aDBhWFJzWlQxY1hFZHZiR1J6ZEdGeUlFSmxZV05vSUNCTlpXRnVJRUp2WkhrZ1EyOXVaR2wwYVc5dUlGTmpiM0psSUZ4Y0xDQjRJRDFjWEcxdmJuUm9YRndzSUhrOUlGeGNJR052Ym1ScGRHbHZiaUJ6WTI5eVpTQW9NUzA1S1Z4Y0tTc2djMk5oYkdWZmVWOXlaWFpsY25ObEtDa2dLeUJtWVdObGRGOTNjbUZ3S0g1NVpXRnlLVnh1SUNBamRHaGxiV1VvWVhocGN5NTBaWGgwTG5nZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvWVc1bmJHVWdQU0E1TUN3Z2RtcDFjM1FnUFNBd0xqVXNJR2hxZFhOMFBURXBLU3RjYmx4dVlHQmdYRzVnWUdBaWZRPT0gLS0+XG5cbmBgYHJcbmBgYHJcbiNDb25kaXRpb24gZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgc2FtcGxlIG1vbnRocyAtIDIwMjNcbmdncGxvdChkYXRhPWRmX0dPTEQyMDIzLCBhZXMoeD0gY29uZGl0aW9uKSkgK1xuICBnZW9tX2JhcigpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXEdvbGRzdGFyIEJlYWNoICBCb2R5IENvbmRpdGlvbiBTY29yZSAtIDIwMjMgXFwsIHggPVxcQ29uZGl0aW9uIGNhdGVnb3JpemF0aW9uXFwpK1xuICAgIGZhY2V0X3dyYXAofiBtb250aCwgc2NhbGVzID0gXFxmcmVlXFwpXG5cbiNDb25kaXRpb24gZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgc2FtcGxlIG1vbnRocyAtIDIwMjRcbmdncGxvdChkYXRhPWRmX0dPTEQyMDI0LCBhZXMoeD0gY29uZGl0aW9uKSkgK1xuICBnZW9tX2JhcigpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXEdvbGRzdGFyIEJlYWNoICBCb2R5IENvbmRpdGlvbiBTY29yZSAtIDIwMjRcXCwgeCA9XFxDb25kaXRpb24gY2F0ZWdvcml6YXRpb25cXCkrXG4gICAgZmFjZXRfd3JhcCh+IG1vbnRoLCBzY2FsZXMgPSBcXGZyZWVcXClcblxuI01lYW4gQm9keSBjb25kaXRpb24gcGVyIG1vbnRoXG5nZ3Bsb3QoZGF0YT1kZl9HT0xELCBhZXMoeD0gbW9udGgsIHk9IGNvbmRpdGlvbl9zY29yZSwgZ3JvdXAgPSBtb250aCkpICtcbiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIGxhYnModGl0bGU9XFxHb2xkc3RhciBCZWFjaCAgTWVhbiBCb2R5IENvbmRpdGlvbiBTY29yZSBcXCwgeCA9XFxtb250aFxcLCB5PSBcXCBjb25kaXRpb24gc2NvcmUgKDEtOSlcXCkrIHNjYWxlX3lfcmV2ZXJzZSgpICsgZmFjZXRfd3JhcCh+eWVhcilcbiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrXG5cbmBgYFxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyM1xuZ2dwbG90KGRhdGE9ZGZfR09MRDIwMjMsIGFlcyh4PSBjb25kaXRpb24pKSArXG4gIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZHN0YXIgQmVhY2ggIEJvZHkgQ29uZGl0aW9uIFNjb3JlIC0gMjAyMyBcXCwgeCA9XFxDb25kaXRpb24gY2F0ZWdvcml6YXRpb25cXCkrXG4gICAgZmFjZXRfd3JhcCh+IG1vbnRoLCBzY2FsZXMgPSBcXGZyZWVcXClcblxuI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyNFxuZ2dwbG90KGRhdGE9ZGZfR09MRDIwMjQsIGFlcyh4PSBjb25kaXRpb24pKSArXG4gIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcR29sZHN0YXIgQmVhY2ggIEJvZHkgQ29uZGl0aW9uIFNjb3JlIC0gMjAyNFxcLCB4ID1cXENvbmRpdGlvbiBjYXRlZ29yaXphdGlvblxcKStcbiAgICBmYWNldF93cmFwKH4gbW9udGgsIHNjYWxlcyA9IFxcZnJlZVxcKVxuXG4jTWVhbiBCb2R5IGNvbmRpdGlvbiBwZXIgbW9udGhcbmdncGxvdChkYXRhPWRmX0dPTEQsIGFlcyh4PSBtb250aCwgeT0gY29uZGl0aW9uX3Njb3JlLCBncm91cCA9IG1vbnRoKSkgK1xuICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YyhcXGZvcmVzdGdyZWVuXFwsXFxvcmFuZ2VcXCwgXFxwdXJwbGVcXCkpK1xuICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgbGFicyh0aXRsZT1cXEdvbGRzdGFyIEJlYWNoICBNZWFuIEJvZHkgQ29uZGl0aW9uIFNjb3JlIFxcLCB4ID1cXG1vbnRoXFwsIHk9IFxcIGNvbmRpdGlvbiBzY29yZSAoMS05KVxcKSsgc2NhbGVfeV9yZXZlcnNlKCkgKyBmYWNldF93cmFwKH55ZWFyKVxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcblxuYGBgXG5gYGAifQ== -->

```r
```r
#Condition distribution across all sample months - 2023
ggplot(data=df_GOLD2023, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Goldstar Beach  Body Condition Score - 2023 \, x =\Condition categorization\)+
    facet_wrap(~ month, scales = \free\)

#Condition distribution across all sample months - 2024
ggplot(data=df_GOLD2024, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Goldstar Beach  Body Condition Score - 2024\, x =\Condition categorization\)+
    facet_wrap(~ month, scales = \free\)

#Mean Body condition per month
ggplot(data=df_GOLD, aes(x= month, y= condition_score, group = month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  labs(title=\Goldstar Beach  Mean Body Condition Score \, x =\month\, y= \ condition score (1-9)\)+ scale_y_reverse() + facet_wrap(~year)
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+

```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->





# Laurel Hollow Summary - NO LONGER A STUDY SITE

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVaR1pmVEVGVlVqd3RJR1JoZEdGZllXeHNKVDRsWEc0Z0lHWnBiSFJsY2loemFYUmxQVDFjSWt4QlZWSmNJaWxjYmx4dUl5TWdVMmhsYkd3Z1NHVnBaMmgwSUNNalhHNXpkRjlvWldsbmFIUmZURUZWVWlBOExTQnpkVzF0WVhKNVUwVW9aR1pmVEVGVlVpd2diV1ZoYzNWeVpYWmhjajFjSW1obGFXZG9kRjl0YlZ3aUxDQm5jbTkxY0haaGNuTTlZeWhjSW1SaGRHVmZZMjlzYkdWamRHVmtYQ0lwS1Z4dWMzUmZhR1ZwWjJoMFgweEJWVklnWEc1Y2JpTWpJRUp2WkhrZ1EyOXVaR2wwYVc5dUlDTWpYRzRqSXlCRmVHTnNkV1JsY3lCTllYa2daSFZsSUhSdklITmpiM0pwYm1jZ2MzbHpkR1Z0SUdOb1lXNW5aUzRnVFdGNUlITmpiM0psWkNCbVlYUXNJRzFsWkdsMWJTd2dkMkYwWlhKNUxpQmNibk4wWDJOdmJtUnBkR2x2Ymw5TVFWVlNQQzBnYzNWdGJXRnllVk5GS0dSbVgweEJWVklzSUcxbFlYTjFjbVYyWVhJZ1BTQmNJbU52Ym1ScGRHbHZibDl6WTI5eVpWd2lMQ0JuY205MWNIWmhjbk1nUFNCaktGd2laR0YwWlY5amIyeHNaV04wWldSY0lpa3BYRzV6ZEY5amIyNWthWFJwYjI1ZlRFRlZVbHh1WUdCZ0luMD0gLS0+XG5cbmBgYHJcbmRmX0xBVVI8LSBkYXRhX2FsbCU+JVxuICBmaWx0ZXIoc2l0ZT09XFxMQVVSXFwpXG5cbiMjIFNoZWxsIEhlaWdodCAjI1xuc3RfaGVpZ2h0X0xBVVIgPC0gc3VtbWFyeVNFKGRmX0xBVVIsIG1lYXN1cmV2YXI9XFxoZWlnaHRfbW1cXCwgZ3JvdXB2YXJzPWMoXFxkYXRlX2NvbGxlY3RlZFxcKSlcbnN0X2hlaWdodF9MQVVSIFxuXG4jIyBCb2R5IENvbmRpdGlvbiAjI1xuIyMgRXhjbHVkZXMgTWF5IGR1ZSB0byBzY29yaW5nIHN5c3RlbSBjaGFuZ2UuIE1heSBzY29yZWQgZmF0LCBtZWRpdW0sIHdhdGVyeS4gXG5zdF9jb25kaXRpb25fTEFVUjwtIHN1bW1hcnlTRShkZl9MQVVSLCBtZWFzdXJldmFyID0gXFxjb25kaXRpb25fc2NvcmVcXCwgZ3JvdXB2YXJzID0gYyhcXGRhdGVfY29sbGVjdGVkXFwpKVxuc3RfY29uZGl0aW9uX0xBVVJcbmBgYFxuXG48IS0tIHJuYi1zb3VyY2UtZW5kIC0tPlxuIn0= -->
df_LAUR<- data_all%>%
  filter(site==\LAUR\)

## Shell Height ##
st_height_LAUR <- summarySE(df_LAUR, measurevar=\height_mm\, groupvars=c(\date_collected\))
st_height_LAUR 

## Body Condition ##
## Excludes May due to scoring system change. May scored fat, medium, watery. 
st_condition_LAUR<- summarySE(df_LAUR, measurevar = \condition_score\, groupvars = c(\date_collected\))
st_condition_LAUR



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVpHWmZURUZWVWp3dElHUmhkR0ZmWVd4c0pUNGxYRzRnSUdacGJIUmxjaWh6YVhSbFBUMWNYRXhCVlZKY1hDbGNibHh1SXlNZ1UyaGxiR3dnU0dWcFoyaDBJQ01qWEc1emRGOW9aV2xuYUhSZlRFRlZVaUE4TFNCemRXMXRZWEo1VTBVb1pHWmZURUZWVWl3Z2JXVmhjM1Z5WlhaaGNqMWNYR2hsYVdkb2RGOXRiVnhjTENCbmNtOTFjSFpoY25NOVl5aGNYR1JoZEdWZlkyOXNiR1ZqZEdWa1hGd3BLVnh1YzNSZmFHVnBaMmgwWDB4QlZWSWdYRzVjYmlNaklFSnZaSGtnUTI5dVpHbDBhVzl1SUNNalhHNGpJeUJGZUdOc2RXUmxjeUJOWVhrZ1pIVmxJSFJ2SUhOamIzSnBibWNnYzNsemRHVnRJR05vWVc1blpTNGdUV0Y1SUhOamIzSmxaQ0JtWVhRc0lHMWxaR2wxYlN3Z2QyRjBaWEo1TGlCY2JuTjBYMk52Ym1ScGRHbHZibDlNUVZWU1BDMGdjM1Z0YldGeWVWTkZLR1JtWDB4QlZWSXNJRzFsWVhOMWNtVjJZWElnUFNCY1hHTnZibVJwZEdsdmJsOXpZMjl5WlZ4Y0xDQm5jbTkxY0haaGNuTWdQU0JqS0Z4Y1pHRjBaVjlqYjJ4c1pXTjBaV1JjWENrcFhHNXpkRjlqYjI1a2FYUnBiMjVmVEVGVlVseHVZR0JnWEc1Z1lHQWlmUT09IC0tPlxuXG5gYGByXG5gYGByXG5kZl9MQVVSPC0gZGF0YV9hbGwlPiVcbiAgZmlsdGVyKHNpdGU9PVxcTEFVUlxcKVxuXG4jIyBTaGVsbCBIZWlnaHQgIyNcbnN0X2hlaWdodF9MQVVSIDwtIHN1bW1hcnlTRShkZl9MQVVSLCBtZWFzdXJldmFyPVxcaGVpZ2h0X21tXFwsIGdyb3VwdmFycz1jKFxcZGF0ZV9jb2xsZWN0ZWRcXCkpXG5zdF9oZWlnaHRfTEFVUiBcblxuIyMgQm9keSBDb25kaXRpb24gIyNcbiMjIEV4Y2x1ZGVzIE1heSBkdWUgdG8gc2NvcmluZyBzeXN0ZW0gY2hhbmdlLiBNYXkgc2NvcmVkIGZhdCwgbWVkaXVtLCB3YXRlcnkuIFxuc3RfY29uZGl0aW9uX0xBVVI8LSBzdW1tYXJ5U0UoZGZfTEFVUiwgbWVhc3VyZXZhciA9IFxcY29uZGl0aW9uX3Njb3JlXFwsIGdyb3VwdmFycyA9IGMoXFxkYXRlX2NvbGxlY3RlZFxcKSlcbnN0X2NvbmRpdGlvbl9MQVVSXG5gYGBcbmBgYFxuXG48IS0tIHJuYi1zb3VyY2UtZW5kIC0tPlxuIn0= -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZGZfTEFVUjwtIGRhdGFfYWxsJT4lXG4gIGZpbHRlcihzaXRlPT1cXExBVVJcXClcblxuIyMgU2hlbGwgSGVpZ2h0ICMjXG5zdF9oZWlnaHRfTEFVUiA8LSBzdW1tYXJ5U0UoZGZfTEFVUiwgbWVhc3VyZXZhcj1cXGhlaWdodF9tbVxcLCBncm91cHZhcnM9YyhcXGRhdGVfY29sbGVjdGVkXFwpKVxuc3RfaGVpZ2h0X0xBVVIgXG5cbiMjIEJvZHkgQ29uZGl0aW9uICMjXG4jIyBFeGNsdWRlcyBNYXkgZHVlIHRvIHNjb3Jpbmcgc3lzdGVtIGNoYW5nZS4gTWF5IHNjb3JlZCBmYXQsIG1lZGl1bSwgd2F0ZXJ5LiBcbnN0X2NvbmRpdGlvbl9MQVVSPC0gc3VtbWFyeVNFKGRmX0xBVVIsIG1lYXN1cmV2YXIgPSBcXGNvbmRpdGlvbl9zY29yZVxcLCBncm91cHZhcnMgPSBjKFxcZGF0ZV9jb2xsZWN0ZWRcXCkpXG5zdF9jb25kaXRpb25fTEFVUlxuYGBgXG5gYGAifQ== -->

```r
```r
df_LAUR<- data_all%>%
  filter(site==\LAUR\)

## Shell Height ##
st_height_LAUR <- summarySE(df_LAUR, measurevar=\height_mm\, groupvars=c(\date_collected\))
st_height_LAUR 

## Body Condition ##
## Excludes May due to scoring system change. May scored fat, medium, watery. 
st_condition_LAUR<- summarySE(df_LAUR, measurevar = \condition_score\, groupvars = c(\date_collected\))
st_condition_LAUR
```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVaMmR3Ykc5MEtHUmhkR0U5WkdaZlRFRlZVaXdnWVdWektIZzliVzl1ZEdnc0lIazlhR1ZwWjJoMFgyMXRMQ0JuY205MWNEMGdiVzl1ZEdncEtTQXJYRzRnSUdkbGIyMWZZbTk0Y0d4dmRDZ3BLeUFnSTNOallXeGxYMlpwYkd4ZmJXRnVkV0ZzS0haaGJIVmxjejFqS0Z3aVptOXlaWE4wWjNKbFpXNWNJaXhjSW05eVlXNW5aVndpTENCY0luQjFjbkJzWlZ3aUtTa3JYRzRnSUhSb1pXMWxYMkozS0NrZ0t5QWdkR2hsYldVb2NHRnVaV3d1WjNKcFpDNXRZV3B2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1N3Z2NHRnVaV3d1WjNKcFpDNXRhVzV2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1NrcklGeHVJQ0FqZEdobGJXVW9ZWGhwY3k1MFpYaDBMbmdnUFNCbGJHVnRaVzUwWDNSbGVIUW9ZVzVuYkdVZ1BTQTVNQ3dnZG1wMWMzUWdQU0F3TGpVc0lHaHFkWE4wUFRFcEtTdGNiaUFnYkdGaWN5aDBhWFJzWlQxY0lpQk1ZWFZ5Wld3Z1NHOXNiRzkzSUUxbFlXNGdVMmhsYkd3Z1NHVnBaMmgwSUMwZ01qQXlNMXdpTENCNElEMWNJbTF2Ym5Sb1hDSXNJSGtnUFNCY0lrMWxZVzRnVTJobGJHd2dTR1ZwWjJoMElDaHRiU2xjSWlsY2JseHVYRzVnWUdBaWZRPT0gLS0+XG5cbmBgYHJcbmdncGxvdChkYXRhPWRmX0xBVVIsIGFlcyh4PW1vbnRoLCB5PWhlaWdodF9tbSwgZ3JvdXA9IG1vbnRoKSkgK1xuICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YyhcXGZvcmVzdGdyZWVuXFwsXFxvcmFuZ2VcXCwgXFxwdXJwbGVcXCkpK1xuICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XFwgTGF1cmVsIEhvbGxvdyBNZWFuIFNoZWxsIEhlaWdodCAtIDIwMjNcXCwgeCA9XFxtb250aFxcLCB5ID0gXFxNZWFuIFNoZWxsIEhlaWdodCAobW0pXFwpXG5cblxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->
ggplot(data=df_LAUR, aes(x=month, y=height_mm, group= month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\ Laurel Hollow Mean Shell Height - 2023\, x =\month\, y = \Mean Shell Height (mm)\)



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVoyZHdiRzkwS0dSaGRHRTlaR1pmVEVGVlVpd2dZV1Z6S0hnOWJXOXVkR2dzSUhrOWFHVnBaMmgwWDIxdExDQm5jbTkxY0QwZ2JXOXVkR2dwS1NBclhHNGdJR2RsYjIxZlltOTRjR3h2ZENncEt5QWdJM05qWVd4bFgyWnBiR3hmYldGdWRXRnNLSFpoYkhWbGN6MWpLRnhjWm05eVpYTjBaM0psWlc1Y1hDeGNYRzl5WVc1blpWeGNMQ0JjWEhCMWNuQnNaVnhjS1NrclhHNGdJSFJvWlcxbFgySjNLQ2tnS3lBZ2RHaGxiV1VvY0dGdVpXd3VaM0pwWkM1dFlXcHZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU3dnY0dGdVpXd3VaM0pwWkM1dGFXNXZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU2tySUZ4dUlDQWpkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBNU1Dd2dkbXAxYzNRZ1BTQXdMalVzSUdocWRYTjBQVEVwS1N0Y2JpQWdiR0ZpY3loMGFYUnNaVDFjWENCTVlYVnlaV3dnU0c5c2JHOTNJRTFsWVc0Z1UyaGxiR3dnU0dWcFoyaDBJQzBnTWpBeU0xeGNMQ0I0SUQxY1hHMXZiblJvWEZ3c0lIa2dQU0JjWEUxbFlXNGdVMmhsYkd3Z1NHVnBaMmgwSUNodGJTbGNYQ2xjYmx4dVhHNWdZR0JjYm1CZ1lDSjkgLS0+XG5cbmBgYHJcbmBgYHJcbmdncGxvdChkYXRhPWRmX0xBVVIsIGFlcyh4PW1vbnRoLCB5PWhlaWdodF9tbSwgZ3JvdXA9IG1vbnRoKSkgK1xuICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YyhcXGZvcmVzdGdyZWVuXFwsXFxvcmFuZ2VcXCwgXFxwdXJwbGVcXCkpK1xuICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XFwgTGF1cmVsIEhvbGxvdyBNZWFuIFNoZWxsIEhlaWdodCAtIDIwMjNcXCwgeCA9XFxtb250aFxcLCB5ID0gXFxNZWFuIFNoZWxsIEhlaWdodCAobW0pXFwpXG5cblxuYGBgXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZ2dwbG90KGRhdGE9ZGZfTEFVUiwgYWVzKHg9bW9udGgsIHk9aGVpZ2h0X21tLCBncm91cD0gbW9udGgpKSArXG4gIGdlb21fYm94cGxvdCgpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXCBMYXVyZWwgSG9sbG93IE1lYW4gU2hlbGwgSGVpZ2h0IC0gMjAyM1xcLCB4ID1cXG1vbnRoXFwsIHkgPSBcXE1lYW4gU2hlbGwgSGVpZ2h0IChtbSlcXClcblxuXG5gYGBcbmBgYCJ9 -->

```r
```r
ggplot(data=df_LAUR, aes(x=month, y=height_mm, group= month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\ Laurel Hollow Mean Shell Height - 2023\, x =\month\, y = \Mean Shell Height (mm)\)

```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJME52Ym1ScGRHbHZiaUJrYVhOMGNtbGlkWFJwYjI0Z1lXTnliM056SUdGc2JDQnpZVzF3YkdVZ2JXOXVkR2h6WEc1blozQnNiM1FvWkdGMFlUMWtabDlNUVZWU0xDQmhaWE1vZUQwZ1kyOXVaR2wwYVc5dUtTa2dLMXh1SUNCblpXOXRYMkpoY2lncEt5QWdJM05qWVd4bFgyWnBiR3hmYldGdWRXRnNLSFpoYkhWbGN6MWpLRndpWm05eVpYTjBaM0psWlc1Y0lpeGNJbTl5WVc1blpWd2lMQ0JjSW5CMWNuQnNaVndpS1NrclhHNGdJSFJvWlcxbFgySjNLQ2tnS3lBZ2RHaGxiV1VvY0dGdVpXd3VaM0pwWkM1dFlXcHZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU3dnY0dGdVpXd3VaM0pwWkM1dGFXNXZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU2tySUZ4dUlDQWpkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBNU1Dd2dkbXAxYzNRZ1BTQXdMalVzSUdocWRYTjBQVEVwS1N0Y2JpQWdiR0ZpY3loMGFYUnNaVDFjSWt4aGRYSmxiQ0JJYjJ4c2IzY2dRbTlrZVNCRGIyNWthWFJwYjI0Z2FXNWtaWGdnTFNBeU1ESXpYQ0lzSUhnZ1BWd2lRMjl1WkdsMGFXOXVJR05oZEdWbmIzSnBlbUYwYVc5dVhDSXBLMXh1SUNBZ0lHWmhZMlYwWDNkeVlYQW9maUJ0YjI1MGFDd2djMk5oYkdWeklEMGdYQ0ptY21WbFhDSXBYRzVjYmx4dUkwMWxZVzRnUW05a2VTQmpiMjVrYVhScGIyNGdjR1Z5SUcxdmJuUm9YRzVuWjNCc2IzUW9aR0YwWVQxa1psOU1RVlZTTENCaFpYTW9lRDBnYlc5dWRHZ3NJSGs5SUdOdmJtUnBkR2x2Ymw5elkyOXlaU3dnWjNKdmRYQWdQU0J0YjI1MGFDa3BJQ3RjYmlBZ1oyVnZiVjlpYjNod2JHOTBLQ2tySUNBamMyTmhiR1ZmWm1sc2JGOXRZVzUxWVd3b2RtRnNkV1Z6UFdNb1hDSm1iM0psYzNSbmNtVmxibHdpTEZ3aWIzSmhibWRsWENJc0lGd2ljSFZ5Y0d4bFhDSXBLU3RjYmlBZ2RHaGxiV1ZmWW5jb0tTQXJJQ0IwYUdWdFpTaHdZVzVsYkM1bmNtbGtMbTFoYW05eUlEMGdaV3hsYldWdWRGOWliR0Z1YXlncExDQndZVzVsYkM1bmNtbGtMbTFwYm05eUlEMGdaV3hsYldWdWRGOWliR0Z1YXlncEtTc2dYRzRnSUd4aFluTW9kR2wwYkdVOVhDSk1ZWFZ5Wld3Z1NHOXNiRzkzSUUxbFlXNGdRbTlrZVNCRGIyNWthWFJwYjI0Z1UyTnZjbVVnTFNBeU1ESXpYQ0lzSUhnZ1BWd2liVzl1ZEdoY0lpd2dlVDBnWENJZ1kyOXVaR2wwYVc5dUlITmpiM0psSUNneExUa3BYQ0lwS3lCelkyRnNaVjk1WDNKbGRtVnljMlVvS1Z4dUlDQWpkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBNU1Dd2dkbXAxYzNRZ1BTQXdMalVzSUdocWRYTjBQVEVwS1N0Y2JtQmdZQ0o5IC0tPlxuXG5gYGByXG4jQ29uZGl0aW9uIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIHNhbXBsZSBtb250aHNcbmdncGxvdChkYXRhPWRmX0xBVVIsIGFlcyh4PSBjb25kaXRpb24pKSArXG4gIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuICBsYWJzKHRpdGxlPVxcTGF1cmVsIEhvbGxvdyBCb2R5IENvbmRpdGlvbiBpbmRleCAtIDIwMjNcXCwgeCA9XFxDb25kaXRpb24gY2F0ZWdvcml6YXRpb25cXCkrXG4gICAgZmFjZXRfd3JhcCh+IG1vbnRoLCBzY2FsZXMgPSBcXGZyZWVcXClcblxuXG4jTWVhbiBCb2R5IGNvbmRpdGlvbiBwZXIgbW9udGhcbmdncGxvdChkYXRhPWRmX0xBVVIsIGFlcyh4PSBtb250aCwgeT0gY29uZGl0aW9uX3Njb3JlLCBncm91cCA9IG1vbnRoKSkgK1xuICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YyhcXGZvcmVzdGdyZWVuXFwsXFxvcmFuZ2VcXCwgXFxwdXJwbGVcXCkpK1xuICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgbGFicyh0aXRsZT1cXExhdXJlbCBIb2xsb3cgTWVhbiBCb2R5IENvbmRpdGlvbiBTY29yZSAtIDIwMjNcXCwgeCA9XFxtb250aFxcLCB5PSBcXCBjb25kaXRpb24gc2NvcmUgKDEtOSlcXCkrIHNjYWxlX3lfcmV2ZXJzZSgpXG4gICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpK1xuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->
#Condition distribution across all sample months
ggplot(data=df_LAUR, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Laurel Hollow Body Condition index - 2023\, x =\Condition categorization\)+
    facet_wrap(~ month, scales = \free\)


#Mean Body condition per month
ggplot(data=df_LAUR, aes(x= month, y= condition_score, group = month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  labs(title=\Laurel Hollow Mean Body Condition Score - 2023\, x =\month\, y= \ condition score (1-9)\)+ scale_y_reverse()
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dUkwTnZibVJwZEdsdmJpQmthWE4wY21saWRYUnBiMjRnWVdOeWIzTnpJR0ZzYkNCellXMXdiR1VnYlc5dWRHaHpYRzVuWjNCc2IzUW9aR0YwWVQxa1psOU1RVlZTTENCaFpYTW9lRDBnWTI5dVpHbDBhVzl1S1NrZ0sxeHVJQ0JuWlc5dFgySmhjaWdwS3lBZ0kzTmpZV3hsWDJacGJHeGZiV0Z1ZFdGc0tIWmhiSFZsY3oxaktGeGNabTl5WlhOMFozSmxaVzVjWEN4Y1hHOXlZVzVuWlZ4Y0xDQmNYSEIxY25Cc1pWeGNLU2tyWEc0Z0lIUm9aVzFsWDJKM0tDa2dLeUFnZEdobGJXVW9jR0Z1Wld3dVozSnBaQzV0WVdwdmNpQTlJR1ZzWlcxbGJuUmZZbXhoYm1zb0tTd2djR0Z1Wld3dVozSnBaQzV0YVc1dmNpQTlJR1ZzWlcxbGJuUmZZbXhoYm1zb0tTa3JJRnh1SUNBamRHaGxiV1VvWVhocGN5NTBaWGgwTG5nZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvWVc1bmJHVWdQU0E1TUN3Z2RtcDFjM1FnUFNBd0xqVXNJR2hxZFhOMFBURXBLU3RjYmlBZ2JHRmljeWgwYVhSc1pUMWNYRXhoZFhKbGJDQkliMnhzYjNjZ1FtOWtlU0JEYjI1a2FYUnBiMjRnYVc1a1pYZ2dMU0F5TURJelhGd3NJSGdnUFZ4Y1EyOXVaR2wwYVc5dUlHTmhkR1ZuYjNKcGVtRjBhVzl1WEZ3cEsxeHVJQ0FnSUdaaFkyVjBYM2R5WVhBb2ZpQnRiMjUwYUN3Z2MyTmhiR1Z6SUQwZ1hGeG1jbVZsWEZ3cFhHNWNibHh1STAxbFlXNGdRbTlrZVNCamIyNWthWFJwYjI0Z2NHVnlJRzF2Ym5Sb1hHNW5aM0JzYjNRb1pHRjBZVDFrWmw5TVFWVlNMQ0JoWlhNb2VEMGdiVzl1ZEdnc0lIazlJR052Ym1ScGRHbHZibDl6WTI5eVpTd2daM0p2ZFhBZ1BTQnRiMjUwYUNrcElDdGNiaUFnWjJWdmJWOWliM2h3Ykc5MEtDa3JJQ0FqYzJOaGJHVmZabWxzYkY5dFlXNTFZV3dvZG1Gc2RXVnpQV01vWEZ4bWIzSmxjM1JuY21WbGJseGNMRnhjYjNKaGJtZGxYRndzSUZ4Y2NIVnljR3hsWEZ3cEtTdGNiaUFnZEdobGJXVmZZbmNvS1NBcklDQjBhR1Z0WlNod1lXNWxiQzVuY21sa0xtMWhhbTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwTENCd1lXNWxiQzVuY21sa0xtMXBibTl5SUQwZ1pXeGxiV1Z1ZEY5aWJHRnVheWdwS1NzZ1hHNGdJR3hoWW5Nb2RHbDBiR1U5WEZ4TVlYVnlaV3dnU0c5c2JHOTNJRTFsWVc0Z1FtOWtlU0JEYjI1a2FYUnBiMjRnVTJOdmNtVWdMU0F5TURJelhGd3NJSGdnUFZ4Y2JXOXVkR2hjWEN3Z2VUMGdYRndnWTI5dVpHbDBhVzl1SUhOamIzSmxJQ2d4TFRrcFhGd3BLeUJ6WTJGc1pWOTVYM0psZG1WeWMyVW9LVnh1SUNBamRHaGxiV1VvWVhocGN5NTBaWGgwTG5nZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvWVc1bmJHVWdQU0E1TUN3Z2RtcDFjM1FnUFNBd0xqVXNJR2hxZFhOMFBURXBLU3RjYm1CZ1lGeHVZR0JnSW4wPSAtLT5cblxuYGBgclxuYGBgclxuI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzXG5nZ3Bsb3QoZGF0YT1kZl9MQVVSLCBhZXMoeD0gY29uZGl0aW9uKSkgK1xuICBnZW9tX2JhcigpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXExhdXJlbCBIb2xsb3cgQm9keSBDb25kaXRpb24gaW5kZXggLSAyMDIzXFwsIHggPVxcQ29uZGl0aW9uIGNhdGVnb3JpemF0aW9uXFwpK1xuICAgIGZhY2V0X3dyYXAofiBtb250aCwgc2NhbGVzID0gXFxmcmVlXFwpXG5cblxuI01lYW4gQm9keSBjb25kaXRpb24gcGVyIG1vbnRoXG5nZ3Bsb3QoZGF0YT1kZl9MQVVSLCBhZXMoeD0gbW9udGgsIHk9IGNvbmRpdGlvbl9zY29yZSwgZ3JvdXAgPSBtb250aCkpICtcbiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIGxhYnModGl0bGU9XFxMYXVyZWwgSG9sbG93IE1lYW4gQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDIzXFwsIHggPVxcbW9udGhcXCwgeT0gXFwgY29uZGl0aW9uIHNjb3JlICgxLTkpXFwpKyBzY2FsZV95X3JldmVyc2UoKVxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbmBgYFxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzXG5nZ3Bsb3QoZGF0YT1kZl9MQVVSLCBhZXMoeD0gY29uZGl0aW9uKSkgK1xuICBnZW9tX2JhcigpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKFxcZm9yZXN0Z3JlZW5cXCxcXG9yYW5nZVxcLCBcXHB1cnBsZVxcKSkrXG4gIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbiAgbGFicyh0aXRsZT1cXExhdXJlbCBIb2xsb3cgQm9keSBDb25kaXRpb24gaW5kZXggLSAyMDIzXFwsIHggPVxcQ29uZGl0aW9uIGNhdGVnb3JpemF0aW9uXFwpK1xuICAgIGZhY2V0X3dyYXAofiBtb250aCwgc2NhbGVzID0gXFxmcmVlXFwpXG5cblxuI01lYW4gQm9keSBjb25kaXRpb24gcGVyIG1vbnRoXG5nZ3Bsb3QoZGF0YT1kZl9MQVVSLCBhZXMoeD0gbW9udGgsIHk9IGNvbmRpdGlvbl9zY29yZSwgZ3JvdXAgPSBtb250aCkpICtcbiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoXFxmb3Jlc3RncmVlblxcLFxcb3JhbmdlXFwsIFxccHVycGxlXFwpKStcbiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIGxhYnModGl0bGU9XFxMYXVyZWwgSG9sbG93IE1lYW4gQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDIzXFwsIHggPVxcbW9udGhcXCwgeT0gXFwgY29uZGl0aW9uIHNjb3JlICgxLTkpXFwpKyBzY2FsZV95X3JldmVyc2UoKVxuICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKStcbmBgYFxuYGBgIn0= -->

```r
```r
#Condition distribution across all sample months
ggplot(data=df_LAUR, aes(x= condition)) +
  geom_bar()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title=\Laurel Hollow Body Condition index - 2023\, x =\Condition categorization\)+
    facet_wrap(~ month, scales = \free\)


#Mean Body condition per month
ggplot(data=df_LAUR, aes(x= month, y= condition_score, group = month)) +
  geom_boxplot()+  #scale_fill_manual(values=c(\forestgreen\,\orange\, \purple\))+
  theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  labs(title=\Laurel Hollow Mean Body Condition Score - 2023\, x =\month\, y= \ condition score (1-9)\)+ scale_y_reverse()
  #theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->

#LAUR Proportions graph Body condition scores - 2023 (only sampled one year)


<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVYRzVNUVZWU1gwSkRVMTl3Y205d2IzSjBhVzl1Y3p3dElHUm1YMHhCVlZJZ0pUNGxYRzRnSUcxMWRHRjBaU2hqYjI1a2FYUnBiMjVmYzJOdmNtVmZiblZ0WlhKcFl5QTlJR0Z6TG01MWJXVnlhV01vWTI5dVpHbDBhVzl1WDNOamIzSmxLU3hqYjI1a2FYUnBiMjVmYzJOdmNtVmZZbWx1SUQwZ1kyRnpaVjkzYUdWdUtHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQXhJSDRnWENJeFhDSXNJR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0F5SUg1Y0lqSmNJaXhqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTXlCK0lGd2lNMXdpTENCamIyNWthWFJwYjI1ZmMyTnZjbVVnUFQwZ05DQitYQ0kwWENJc1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOUlEVWdmaUJjSWpWY0lpd2dZMjl1WkdsMGFXOXVYM05qYjNKbElEMDlJRFlnZmx3aU5sd2lMR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0EzSUg0Z1hDSTNYQ0lzSUdOdmJtUnBkR2x2Ymw5elkyOXlaU0E5UFNBNElINWNJamhjSWl3Z1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOU9TQitYQ0k1WENJc0lGUlNWVVVnZmlCaGN5NWphR0Z5WVdOMFpYSW9ZMjl1WkdsMGFXOXVYM05qYjNKbEtTa3BJQ1UrSlZ4dUlDQm5jbTkxY0Y5aWVTaHphWFJsTENCdGIyNTBhQ3dnWTI5dVpHbDBhVzl1WDNOamIzSmxYMkpwYml3Z2VXVmhjaWtnSlQ0bElHUndiSGx5T2pwemRXMXRZWEpwYzJVb1EyOTFiblE5SUc0b0tTa2dKVDRsWEc0Z0lIVnVaM0p2ZFhBb0tTQWxQaVZjYmlBZ2JYVjBZWFJsS0ZCeWIzQnZjblJwYjI0Z1BTQkRiM1Z1ZEM5emRXMG9RMjkxYm5RcEtWeHVYRzVNUVZWU1gwSkRVMTl3Y205d2IzSjBhVzl1Y3p3dElHNWhMbTl0YVhRb1RFRlZVbDlDUTFOZmNISnZjRzl5ZEdsdmJuTXBYRzVjYmt4QlZWSmZRa05UWDNCeWIzQnZjblJwYjI1elhHNWNia0pEVTE5d2NtOXdiM0owYVc5dVgweEJWVkk4TFNCblozQnNiM1FvWkdGMFlUMU1RVlZTWDBKRFUxOXdjbTl3YjNKMGFXOXVjeXdnWVdWektIZzliVzl1ZEdnc0lIazlJRkJ5YjNCdmNuUnBiMjRzSUdacGJHdzlZMjl1WkdsMGFXOXVYM05qYjNKbFgySnBiaWtwSUN0Y2JpQWdaMlZ2YlY5aVlYSW9kMmxrZEdnZ1BTQXVOU3dnYzNSaGREMWNJbWxrWlc1MGFYUjVYQ0lzSUhCdmMybDBhVzl1SUQwZ1hDSm1hV3hzWENJcEt5QWdYRzRnSUNCMGFHVnRaVjlpZHlncElDc2dJSFJvWlcxbEtIQmhibVZzTG1keWFXUXViV0ZxYjNJZ1BTQmxiR1Z0Wlc1MFgySnNZVzVyS0Nrc0lIQmhibVZzTG1keWFXUXViV2x1YjNJZ1BTQmxiR1Z0Wlc1MFgySnNZVzVyS0NrcEt5QmNiaUFnZEdobGJXVW9ZWGhwY3k1MFpYaDBMbmdnUFNCbGJHVnRaVzUwWDNSbGVIUW9ZVzVuYkdVZ1BTQTBOU3dnZG1wMWMzUWdQU0F4TENCb2FuVnpkRDB4S1NrclhHNGdJR3hoWW5Nb2RHbDBiR1U5WENKTVlYVnlaV3dnU0c5c2JHOTNJRkJ5YjNCdmNuUnBiMjRnYjJZZ1ltOWtlU0JqYjI1a2FYUnBiMjRnYzJOdmNtVnpJQzBnTWpBeU0xd2lMQ0I0SUQxY0ltMXZiblJvWENJc0lIa2dQU0JjSWxCeWIzQnZjblJwYjI0Z2IyWWdZbTlrZVNCamIyNWthWFJwYjI0Z2MyTnZjbVZ6SUZ3aUtTc2dkR2hsYldVb1lYaHBjeTUwYVhSc1pTNTVJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNCeVpXd29NUzR6S1N3Z1lXNW5iR1VnUFRrd0tTd2dZWGhwY3k1MGFYUnNaUzU0SUQwZ1pXeGxiV1Z1ZEY5MFpYaDBLSE5wZW1VZ1BTQnlaV3dvTVM0ektTd2dZVzVuYkdVZ1BTQXdLU2tyWEc0Z0lIUm9aVzFsS0dGNGFYTXVkR1Y0ZEQxbGJHVnRaVzUwWDNSbGVIUW9jMmw2WlQweE1pa3BYRzRnSUNObVlXTmxkRjkzY21Gd0tINGdlV1ZoY2lsY2JpQWpjMk5oYkdWZlptbHNiRjlpY21WM1pYSW9LU0FyWEc0Z0lDTm1ZV05sZEY5M2NtRndLSDRnYzJsMFpTbGNibHh1UWtOVFgzQnliM0J2Y25ScGIyNWZURUZWVWx4dUlDQmNibkJrWmlod1lYTjBaVEFvY0dGMGFDQTlJRndpVEdGaVgwUmhkR0ZmVkdsemMzVmxVSEp2WTJWemMybHVaeTl2ZFhSd2RYUmNJaUFzWENJdlRFRlZVbDlDUTFOZmNISnZjRzl5ZEdsdmJpNXdaR1pjSWlrc0lHaGxhV2RvZENBOUlEY3NJSGRwWkhSb0lEMGdNVE1wWEc1d2NtbHVkQ2hDUTFOZmNISnZjRzl5ZEdsdmJsOU1RVlZTS1Z4dVpHVjJMbTltWmlncFhHNWdZR0FpZlE9PSAtLT5cblxuYGBgclxuXG5MQVVSX0JDU19wcm9wb3J0aW9uczwtIGRmX0xBVVIgJT4lXG4gIG11dGF0ZShjb25kaXRpb25fc2NvcmVfbnVtZXJpYyA9IGFzLm51bWVyaWMoY29uZGl0aW9uX3Njb3JlKSxjb25kaXRpb25fc2NvcmVfYmluID0gY2FzZV93aGVuKGNvbmRpdGlvbl9zY29yZSA9PSAxIH4gXFwxXFwsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH5cXDJcXCxjb25kaXRpb25fc2NvcmUgPT0gMyB+IFxcM1xcLCBjb25kaXRpb25fc2NvcmUgPT0gNCB+XFw0XFwsY29uZGl0aW9uX3Njb3JlID09IDUgfiBcXDVcXCwgY29uZGl0aW9uX3Njb3JlID09IDYgflxcNlxcLGNvbmRpdGlvbl9zY29yZSA9PSA3IH4gXFw3XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH5cXDhcXCwgY29uZGl0aW9uX3Njb3JlID09OSB+XFw5XFwsIFRSVUUgfiBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uX3Njb3JlKSkpICU+JVxuICBncm91cF9ieShzaXRlLCBtb250aCwgY29uZGl0aW9uX3Njb3JlX2JpbiwgeWVhcikgJT4lIGRwbHlyOjpzdW1tYXJpc2UoQ291bnQ9IG4oKSkgJT4lXG4gIHVuZ3JvdXAoKSAlPiVcbiAgbXV0YXRlKFByb3BvcnRpb24gPSBDb3VudC9zdW0oQ291bnQpKVxuXG5MQVVSX0JDU19wcm9wb3J0aW9uczwtIG5hLm9taXQoTEFVUl9CQ1NfcHJvcG9ydGlvbnMpXG5cbkxBVVJfQkNTX3Byb3BvcnRpb25zXG5cbkJDU19wcm9wb3J0aW9uX0xBVVI8LSBnZ3Bsb3QoZGF0YT1MQVVSX0JDU19wcm9wb3J0aW9ucywgYWVzKHg9bW9udGgsIHk9IFByb3BvcnRpb24sIGZpbGw9Y29uZGl0aW9uX3Njb3JlX2JpbikpICtcbiAgZ2VvbV9iYXIod2lkdGggPSAuNSwgc3RhdD1cXGlkZW50aXR5XFwsIHBvc2l0aW9uID0gXFxmaWxsXFwpKyAgXG4gICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XFxMYXVyZWwgSG9sbG93IFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyM1xcLCB4ID1cXG1vbnRoXFwsIHkgPSBcXFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIFxcKSsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPTkwKSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSkrXG4gIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpXG4gICNmYWNldF93cmFwKH4geWVhcilcbiAjc2NhbGVfZmlsbF9icmV3ZXIoKSArXG4gICNmYWNldF93cmFwKH4gc2l0ZSlcblxuQkNTX3Byb3BvcnRpb25fTEFVUlxuICBcbnBkZihwYXN0ZTAocGF0aCA9IFxcTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXRcXCAsXFwvTEFVUl9CQ1NfcHJvcG9ydGlvbi5wZGZcXCksIGhlaWdodCA9IDcsIHdpZHRoID0gMTMpXG5wcmludChCQ1NfcHJvcG9ydGlvbl9MQVVSKVxuZGV2Lm9mZigpXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->

LAUR_BCS_proportions<- df_LAUR %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ \1\, condition_score == 2 ~\2\,condition_score == 3 ~ \3\, condition_score == 4 ~\4\,condition_score == 5 ~ \5\, condition_score == 6 ~\6\,condition_score == 7 ~ \7\, condition_score == 8 ~\8\, condition_score ==9 ~\9\, TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, condition_score_bin, year) %>% dplyr::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))

LAUR_BCS_proportions<- na.omit(LAUR_BCS_proportions)

LAUR_BCS_proportions

BCS_proportion_LAUR<- ggplot(data=LAUR_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\)+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title=\Laurel Hollow Proportion of body condition scores - 2023\, x =\month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))
  #facet_wrap(~ year)
 #scale_fill_brewer() +
  #facet_wrap(~ site)

BCS_proportion_LAUR
  
pdf(paste0(path = \Lab_Data_TissueProcessing/output\ ,\/LAUR_BCS_proportion.pdf\), height = 7, width = 13)
print(BCS_proportion_LAUR)
dev.off()



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVhHNU1RVlZTWDBKRFUxOXdjbTl3YjNKMGFXOXVjend0SUdSbVgweEJWVklnSlQ0bFhHNGdJRzExZEdGMFpTaGpiMjVrYVhScGIyNWZjMk52Y21WZmJuVnRaWEpwWXlBOUlHRnpMbTUxYldWeWFXTW9ZMjl1WkdsMGFXOXVYM05qYjNKbEtTeGpiMjVrYVhScGIyNWZjMk52Y21WZlltbHVJRDBnWTJGelpWOTNhR1Z1S0dOdmJtUnBkR2x2Ymw5elkyOXlaU0E5UFNBeElINGdYRnd4WEZ3c0lHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQXlJSDVjWERKY1hDeGpiMjVrYVhScGIyNWZjMk52Y21VZ1BUMGdNeUIrSUZ4Y00xeGNMQ0JqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTkNCK1hGdzBYRndzWTI5dVpHbDBhVzl1WDNOamIzSmxJRDA5SURVZ2ZpQmNYRFZjWEN3Z1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOUlEWWdmbHhjTmx4Y0xHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQTNJSDRnWEZ3M1hGd3NJR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0E0SUg1Y1hEaGNYQ3dnWTI5dVpHbDBhVzl1WDNOamIzSmxJRDA5T1NCK1hGdzVYRndzSUZSU1ZVVWdmaUJoY3k1amFHRnlZV04wWlhJb1kyOXVaR2wwYVc5dVgzTmpiM0psS1NrcElDVStKVnh1SUNCbmNtOTFjRjlpZVNoemFYUmxMQ0J0YjI1MGFDd2dZMjl1WkdsMGFXOXVYM05qYjNKbFgySnBiaXdnZVdWaGNpa2dKVDRsSUdSd2JIbHlPanB6ZFcxdFlYSnBjMlVvUTI5MWJuUTlJRzRvS1NrZ0pUNGxYRzRnSUhWdVozSnZkWEFvS1NBbFBpVmNiaUFnYlhWMFlYUmxLRkJ5YjNCdmNuUnBiMjRnUFNCRGIzVnVkQzl6ZFcwb1EyOTFiblFwS1Z4dVhHNU1RVlZTWDBKRFUxOXdjbTl3YjNKMGFXOXVjend0SUc1aExtOXRhWFFvVEVGVlVsOUNRMU5mY0hKdmNHOXlkR2x2Ym5NcFhHNWNia3hCVlZKZlFrTlRYM0J5YjNCdmNuUnBiMjV6WEc1Y2JrSkRVMTl3Y205d2IzSjBhVzl1WDB4QlZWSThMU0JuWjNCc2IzUW9aR0YwWVQxTVFWVlNYMEpEVTE5d2NtOXdiM0owYVc5dWN5d2dZV1Z6S0hnOWJXOXVkR2dzSUhrOUlGQnliM0J2Y25ScGIyNHNJR1pwYkd3OVkyOXVaR2wwYVc5dVgzTmpiM0psWDJKcGJpa3BJQ3RjYmlBZ1oyVnZiVjlpWVhJb2QybGtkR2dnUFNBdU5Td2djM1JoZEQxY1hHbGtaVzUwYVhSNVhGd3NJSEJ2YzJsMGFXOXVJRDBnWEZ4bWFXeHNYRndwS3lBZ1hHNGdJQ0IwYUdWdFpWOWlkeWdwSUNzZ0lIUm9aVzFsS0hCaGJtVnNMbWR5YVdRdWJXRnFiM0lnUFNCbGJHVnRaVzUwWDJKc1lXNXJLQ2tzSUhCaGJtVnNMbWR5YVdRdWJXbHViM0lnUFNCbGJHVnRaVzUwWDJKc1lXNXJLQ2twS3lCY2JpQWdkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBME5Td2dkbXAxYzNRZ1BTQXhMQ0JvYW5WemREMHhLU2tyWEc0Z0lHeGhZbk1vZEdsMGJHVTlYRnhNWVhWeVpXd2dTRzlzYkc5M0lGQnliM0J2Y25ScGIyNGdiMllnWW05a2VTQmpiMjVrYVhScGIyNGdjMk52Y21WeklDMGdNakF5TTF4Y0xDQjRJRDFjWEcxdmJuUm9YRndzSUhrZ1BTQmNYRkJ5YjNCdmNuUnBiMjRnYjJZZ1ltOWtlU0JqYjI1a2FYUnBiMjRnYzJOdmNtVnpJRnhjS1NzZ2RHaGxiV1VvWVhocGN5NTBhWFJzWlM1NUlEMGdaV3hsYldWdWRGOTBaWGgwS0hOcGVtVWdQU0J5Wld3b01TNHpLU3dnWVc1bmJHVWdQVGt3S1N3Z1lYaHBjeTUwYVhSc1pTNTRJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNCeVpXd29NUzR6S1N3Z1lXNW5iR1VnUFNBd0tTa3JYRzRnSUhSb1pXMWxLR0Y0YVhNdWRHVjRkRDFsYkdWdFpXNTBYM1JsZUhRb2MybDZaVDB4TWlrcFhHNGdJQ05tWVdObGRGOTNjbUZ3S0g0Z2VXVmhjaWxjYmlBamMyTmhiR1ZmWm1sc2JGOWljbVYzWlhJb0tTQXJYRzRnSUNObVlXTmxkRjkzY21Gd0tINGdjMmwwWlNsY2JseHVRa05UWDNCeWIzQnZjblJwYjI1ZlRFRlZVbHh1SUNCY2JuQmtaaWh3WVhOMFpUQW9jR0YwYUNBOUlGeGNUR0ZpWDBSaGRHRmZWR2x6YzNWbFVISnZZMlZ6YzJsdVp5OXZkWFJ3ZFhSY1hDQXNYRnd2VEVGVlVsOUNRMU5mY0hKdmNHOXlkR2x2Ymk1d1pHWmNYQ2tzSUdobGFXZG9kQ0E5SURjc0lIZHBaSFJvSUQwZ01UTXBYRzV3Y21sdWRDaENRMU5mY0hKdmNHOXlkR2x2Ymw5TVFWVlNLVnh1WkdWMkxtOW1aaWdwWEc1Z1lHQmNibUJnWUNKOSAtLT5cblxuYGBgclxuYGBgclxuXG5MQVVSX0JDU19wcm9wb3J0aW9uczwtIGRmX0xBVVIgJT4lXG4gIG11dGF0ZShjb25kaXRpb25fc2NvcmVfbnVtZXJpYyA9IGFzLm51bWVyaWMoY29uZGl0aW9uX3Njb3JlKSxjb25kaXRpb25fc2NvcmVfYmluID0gY2FzZV93aGVuKGNvbmRpdGlvbl9zY29yZSA9PSAxIH4gXFwxXFwsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH5cXDJcXCxjb25kaXRpb25fc2NvcmUgPT0gMyB+IFxcM1xcLCBjb25kaXRpb25fc2NvcmUgPT0gNCB+XFw0XFwsY29uZGl0aW9uX3Njb3JlID09IDUgfiBcXDVcXCwgY29uZGl0aW9uX3Njb3JlID09IDYgflxcNlxcLGNvbmRpdGlvbl9zY29yZSA9PSA3IH4gXFw3XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH5cXDhcXCwgY29uZGl0aW9uX3Njb3JlID09OSB+XFw5XFwsIFRSVUUgfiBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uX3Njb3JlKSkpICU+JVxuICBncm91cF9ieShzaXRlLCBtb250aCwgY29uZGl0aW9uX3Njb3JlX2JpbiwgeWVhcikgJT4lIGRwbHlyOjpzdW1tYXJpc2UoQ291bnQ9IG4oKSkgJT4lXG4gIHVuZ3JvdXAoKSAlPiVcbiAgbXV0YXRlKFByb3BvcnRpb24gPSBDb3VudC9zdW0oQ291bnQpKVxuXG5MQVVSX0JDU19wcm9wb3J0aW9uczwtIG5hLm9taXQoTEFVUl9CQ1NfcHJvcG9ydGlvbnMpXG5cbkxBVVJfQkNTX3Byb3BvcnRpb25zXG5cbkJDU19wcm9wb3J0aW9uX0xBVVI8LSBnZ3Bsb3QoZGF0YT1MQVVSX0JDU19wcm9wb3J0aW9ucywgYWVzKHg9bW9udGgsIHk9IFByb3BvcnRpb24sIGZpbGw9Y29uZGl0aW9uX3Njb3JlX2JpbikpICtcbiAgZ2VvbV9iYXIod2lkdGggPSAuNSwgc3RhdD1cXGlkZW50aXR5XFwsIHBvc2l0aW9uID0gXFxmaWxsXFwpKyAgXG4gICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XFxMYXVyZWwgSG9sbG93IFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyM1xcLCB4ID1cXG1vbnRoXFwsIHkgPSBcXFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIFxcKSsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPTkwKSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSkrXG4gIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpXG4gICNmYWNldF93cmFwKH4geWVhcilcbiAjc2NhbGVfZmlsbF9icmV3ZXIoKSArXG4gICNmYWNldF93cmFwKH4gc2l0ZSlcblxuQkNTX3Byb3BvcnRpb25fTEFVUlxuICBcbnBkZihwYXN0ZTAocGF0aCA9IFxcTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXRcXCAsXFwvTEFVUl9CQ1NfcHJvcG9ydGlvbi5wZGZcXCksIGhlaWdodCA9IDcsIHdpZHRoID0gMTMpXG5wcmludChCQ1NfcHJvcG9ydGlvbl9MQVVSKVxuZGV2Lm9mZigpXG5gYGBcbmBgYFxuXG48IS0tIHJuYi1zb3VyY2UtZW5kIC0tPlxuIn0= -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5MQVVSX0JDU19wcm9wb3J0aW9uczwtIGRmX0xBVVIgJT4lXG4gIG11dGF0ZShjb25kaXRpb25fc2NvcmVfbnVtZXJpYyA9IGFzLm51bWVyaWMoY29uZGl0aW9uX3Njb3JlKSxjb25kaXRpb25fc2NvcmVfYmluID0gY2FzZV93aGVuKGNvbmRpdGlvbl9zY29yZSA9PSAxIH4gXFwxXFwsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH5cXDJcXCxjb25kaXRpb25fc2NvcmUgPT0gMyB+IFxcM1xcLCBjb25kaXRpb25fc2NvcmUgPT0gNCB+XFw0XFwsY29uZGl0aW9uX3Njb3JlID09IDUgfiBcXDVcXCwgY29uZGl0aW9uX3Njb3JlID09IDYgflxcNlxcLGNvbmRpdGlvbl9zY29yZSA9PSA3IH4gXFw3XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH5cXDhcXCwgY29uZGl0aW9uX3Njb3JlID09OSB+XFw5XFwsIFRSVUUgfiBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uX3Njb3JlKSkpICU+JVxuICBncm91cF9ieShzaXRlLCBtb250aCwgY29uZGl0aW9uX3Njb3JlX2JpbiwgeWVhcikgJT4lIGRwbHlyOjpzdW1tYXJpc2UoQ291bnQ9IG4oKSkgJT4lXG4gIHVuZ3JvdXAoKSAlPiVcbiAgbXV0YXRlKFByb3BvcnRpb24gPSBDb3VudC9zdW0oQ291bnQpKVxuXG5MQVVSX0JDU19wcm9wb3J0aW9uczwtIG5hLm9taXQoTEFVUl9CQ1NfcHJvcG9ydGlvbnMpXG5cbkxBVVJfQkNTX3Byb3BvcnRpb25zXG5cbkJDU19wcm9wb3J0aW9uX0xBVVI8LSBnZ3Bsb3QoZGF0YT1MQVVSX0JDU19wcm9wb3J0aW9ucywgYWVzKHg9bW9udGgsIHk9IFByb3BvcnRpb24sIGZpbGw9Y29uZGl0aW9uX3Njb3JlX2JpbikpICtcbiAgZ2VvbV9iYXIod2lkdGggPSAuNSwgc3RhdD1cXGlkZW50aXR5XFwsIHBvc2l0aW9uID0gXFxmaWxsXFwpKyAgXG4gICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyBcbiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdD0xKSkrXG4gIGxhYnModGl0bGU9XFxMYXVyZWwgSG9sbG93IFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyM1xcLCB4ID1cXG1vbnRoXFwsIHkgPSBcXFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIFxcKSsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPTkwKSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSkrXG4gIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpXG4gICNmYWNldF93cmFwKH4geWVhcilcbiAjc2NhbGVfZmlsbF9icmV3ZXIoKSArXG4gICNmYWNldF93cmFwKH4gc2l0ZSlcblxuQkNTX3Byb3BvcnRpb25fTEFVUlxuICBcbnBkZihwYXN0ZTAocGF0aCA9IFxcTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXRcXCAsXFwvTEFVUl9CQ1NfcHJvcG9ydGlvbi5wZGZcXCksIGhlaWdodCA9IDcsIHdpZHRoID0gMTMpXG5wcmludChCQ1NfcHJvcG9ydGlvbl9MQVVSKVxuZGV2Lm9mZigpXG5gYGBcbmBgYCJ9 -->

```r
```r

LAUR_BCS_proportions<- df_LAUR %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ \1\, condition_score == 2 ~\2\,condition_score == 3 ~ \3\, condition_score == 4 ~\4\,condition_score == 5 ~ \5\, condition_score == 6 ~\6\,condition_score == 7 ~ \7\, condition_score == 8 ~\8\, condition_score ==9 ~\9\, TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, condition_score_bin, year) %>% dplyr::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))

LAUR_BCS_proportions<- na.omit(LAUR_BCS_proportions)

LAUR_BCS_proportions

BCS_proportion_LAUR<- ggplot(data=LAUR_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\)+  
   theme_bw() +  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  labs(title=\Laurel Hollow Proportion of body condition scores - 2023\, x =\month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.3), angle =90), axis.title.x = element_text(size = rel(1.3), angle = 0))+
  theme(axis.text=element_text(size=12))
  #facet_wrap(~ year)
 #scale_fill_brewer() +
  #facet_wrap(~ site)

BCS_proportion_LAUR
  
pdf(paste0(path = \Lab_Data_TissueProcessing/output\ ,\/LAUR_BCS_proportion.pdf\), height = 7, width = 13)
print(BCS_proportion_LAUR)
dev.off()
```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->

# % of scores >3 at LAUR june - november 

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVYRzRqY21WdGIzWnBibWNnTURneU0wWkZUa05mTWpnZ1ltTnpJSGRoY3lCT1FWeHVaR1pmVEVGVlVpNGdQQzBnWkdaZlRFRlZVaVUrSldacGJIUmxjaWdoY205M1gyNTFiV0psY2lncElDVnBiaVVnWXlneUtTbGNibHh1VEVGVlVsOXdjbVZqWlc1MFgyZHlaV0YwWlhKZk15QThMU0JrWmw5TVFWVlNMaUFsUGlWY2JpQWdaSEJzZVhJNk9tZHliM1Z3WDJKNUtHMXZiblJvTENCemFYUmxMQ0I1WldGeUtTQWxQaVZjYmlBZ1pIQnNlWEk2T25OMWJXMWhjbWx6WlNoUVpYSmpaVzUwWVdkbElEMGdiV1ZoYmloamIyNWthWFJwYjI1ZmMyTnZjbVVnUEQwZ015a3FNVEF3S1Z4dVRFRlZVbDl3Y21WalpXNTBYMmR5WldGMFpYSmZNMXh1WEc1TVFWVlNYMEpEVTE5d1pYSmpaVzUwWVdkbElEd3RJRXhCVlZKZmNISmxZMlZ1ZEY5bmNtVmhkR1Z5WHpNZ0pUNGxYRzRnSUdkbmNHeHZkQ2hoWlhNb2VDQTlJRzF2Ym5Sb0xDQjVJRDBnVUdWeVkyVnVkR0ZuWlNrcElDdGNiaUFnSTJkbGIyMWZZbUZ5S0hkcFpIUm9JRDBnTUM0MUxDQnpkR0YwSUQwZ1hDSnBaR1Z1ZEdsMGVWd2lMQ0J3YjNOcGRHbHZiaUE5SUZ3aVptbHNiRndpS1NBclhHNGdJQ0FnWjJWdmJWOWpiMndvS1N0Y2JpQWdkR2hsYldWZlluY29LU0FyWEc0Z0lIUm9aVzFsS0Z4dUlDQWdJSEJoYm1Wc0xtZHlhV1F1YldGcWIzSWdQU0JsYkdWdFpXNTBYMkpzWVc1cktDa3NYRzRnSUNBZ2NHRnVaV3d1WjNKcFpDNXRhVzV2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1N4Y2JpQWdJQ0JoZUdsekxuUmxlSFF1ZUNBOUlHVnNaVzFsYm5SZmRHVjRkQ2hoYm1kc1pTQTlJRFExTENCMmFuVnpkQ0E5SURFc0lHaHFkWE4wSUQwZ01Ta3NYRzRnSUNBZ1lYaHBjeTUwYVhSc1pTNTVJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNCeVpXd29NUzR6S1N3Z1lXNW5iR1VnUFNBNU1Da3NYRzRnSUNBZ1lYaHBjeTUwYVhSc1pTNTRJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNCeVpXd29NUzR6S1N3Z1lXNW5iR1VnUFNBd0tTeGNiaUFnSUNCaGVHbHpMblJsZUhRZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvYzJsNlpTQTlJREV5S1Z4dUlDQXBJQ3RjYmlBZ2JHRmljeWhjYmlBZ0lDQjBhWFJzWlNBOUlGd2lSMjlzWkNCVGRHRnlJRUpsWVdOb0lDVWdiMllnWW05a2VTQmpiMjVrYVhScGIyNGdjMk52Y21WeklENDlJRE5jSWl4Y2JpQWdJQ0I0SUQwZ1hDSnRiMjUwYUZ3aUxGeHVJQ0FnSUhrZ1BTQmNJbEJsY21ObGJuUmhaMlVnYjJZZ1ltOWtlU0JqYjI1a2FYUnBiMjRnYzJOdmNtVnpJRDQ5SUROY0lseHVJQ0FwSUNNclptRmpaWFJmZDNKaGNDaCtlV1ZoY2lsY2JpQWdJeXNnYzJOaGJHVmZlRjlqYjI1MGFXNTFiM1Z6S0NCaWNtVmhhM01nUFNCelpYRW9OU3d4TWl3Z1lua2dQVEVwSUNrclhHNGdJQ041YkdsdEtEQXNOakFwS3lCY2JpQWdJM05qWVd4bFgzbGZZMjl1ZEdsdWRXOTFjeWhzYVcxcGRITWdQU0JqS0RBc01UQXdLU3dnWW5KbFlXdHpJRDBnYzJWeEtEQXNNVEF3TENCaWVTQTlJREV3S1NrZ1hHNWNiaUFnSUNCY2JreEJWVkpmUWtOVFgzQmxjbU5sYm5SaFoyVmNibHh1Y0dSbUtIQmhjM1JsTUNod1lYUm9JRDBnWENKTVlXSmZSR0YwWVY5VWFYTnpkV1ZRY205alpYTnphVzVuTDI5MWRIQjFkRndpTENCY0lpOU1RVlZTWDBKRFUxOXdaWEpqWlc1MFlXZGxMbkJrWmx3aUtTeG9aV2xuYUhRZ1BTQTNMQ0IzYVdSMGFDQTlJREV6S1Z4dWNISnBiblFvVEVGVlVsOUNRMU5mY0dWeVkyVnVkR0ZuWlNsY2JtUmxkaTV2Wm1Zb0tTQmNibHh1WEc1Y2JtQmdZQ0o5IC0tPlxuXG5gYGByXG5cbiNyZW1vdmluZyAwODIzRkVOQ18yOCBiY3Mgd2FzIE5BXG5kZl9MQVVSLiA8LSBkZl9MQVVSJT4lZmlsdGVyKCFyb3dfbnVtYmVyKCkgJWluJSBjKDIpKVxuXG5MQVVSX3ByZWNlbnRfZ3JlYXRlcl8zIDwtIGRmX0xBVVIuICU+JVxuICBkcGx5cjo6Z3JvdXBfYnkobW9udGgsIHNpdGUsIHllYXIpICU+JVxuICBkcGx5cjo6c3VtbWFyaXNlKFBlcmNlbnRhZ2UgPSBtZWFuKGNvbmRpdGlvbl9zY29yZSA8PSAzKSoxMDApXG5MQVVSX3ByZWNlbnRfZ3JlYXRlcl8zXG5cbkxBVVJfQkNTX3BlcmNlbnRhZ2UgPC0gTEFVUl9wcmVjZW50X2dyZWF0ZXJfMyAlPiVcbiAgZ2dwbG90KGFlcyh4ID0gbW9udGgsIHkgPSBQZXJjZW50YWdlKSkgK1xuICAjZ2VvbV9iYXIod2lkdGggPSAwLjUsIHN0YXQgPSBcXGlkZW50aXR5XFwsIHBvc2l0aW9uID0gXFxmaWxsXFwpICtcbiAgICBnZW9tX2NvbCgpK1xuICB0aGVtZV9idygpICtcbiAgdGhlbWUoXG4gICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSxcbiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLFxuICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3QgPSAxKSxcbiAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDkwKSxcbiAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApLFxuICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpXG4gICkgK1xuICBsYWJzKFxuICAgIHRpdGxlID0gXFxHb2xkIFN0YXIgQmVhY2ggJSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gM1xcLFxuICAgIHggPSBcXG1vbnRoXFwsXG4gICAgeSA9IFxcUGVyY2VudGFnZSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gM1xcXG4gICkgIytmYWNldF93cmFwKH55ZWFyKVxuICAjKyBzY2FsZV94X2NvbnRpbnVvdXMoIGJyZWFrcyA9IHNlcSg1LDEyLCBieSA9MSkgKStcbiAgI3lsaW0oMCw2MCkrIFxuICAjc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxMDApLCBicmVha3MgPSBzZXEoMCwxMDAsIGJ5ID0gMTApKSBcblxuICAgIFxuTEFVUl9CQ1NfcGVyY2VudGFnZVxuXG5wZGYocGFzdGUwKHBhdGggPSBcXExhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFwsIFxcL0xBVVJfQkNTX3BlcmNlbnRhZ2UucGRmXFwpLGhlaWdodCA9IDcsIHdpZHRoID0gMTMpXG5wcmludChMQVVSX0JDU19wZXJjZW50YWdlKVxuZGV2Lm9mZigpIFxuXG5cblxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->

#removing 0823FENC_28 bcs was NA
df_LAUR. <- df_LAUR%>%filter(!row_number() %in% c(2))

LAUR_precent_greater_3 <- df_LAUR. %>%
  dplyr::group_by(month, site, year) %>%
  dplyr::summarise(Percentage = mean(condition_score <= 3)*100)
LAUR_precent_greater_3

LAUR_BCS_percentage <- LAUR_precent_greater_3 %>%
  ggplot(aes(x = month, y = Percentage)) +
  #geom_bar(width = 0.5, stat = \identity\, position = \fill\) +
    geom_col()+
  theme_bw() +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    axis.title.y = element_text(size = rel(1.3), angle = 90),
    axis.title.x = element_text(size = rel(1.3), angle = 0),
    axis.text = element_text(size = 12)
  ) +
  labs(
    title = \Gold Star Beach % of body condition scores >= 3\,
    x = \month\,
    y = \Percentage of body condition scores >= 3\
  ) #+facet_wrap(~year)
  #+ scale_x_continuous( breaks = seq(5,12, by =1) )+
  #ylim(0,60)+ 
  #scale_y_continuous(limits = c(0,100), breaks = seq(0,100, by = 10)) 

    
LAUR_BCS_percentage

pdf(paste0(path = \Lab_Data_TissueProcessing/output\, \/LAUR_BCS_percentage.pdf\),height = 7, width = 13)
print(LAUR_BCS_percentage)
dev.off() 



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dVhHNGpjbVZ0YjNacGJtY2dNRGd5TTBaRlRrTmZNamdnWW1OeklIZGhjeUJPUVZ4dVpHWmZURUZWVWk0Z1BDMGdaR1pmVEVGVlVpVStKV1pwYkhSbGNpZ2hjbTkzWDI1MWJXSmxjaWdwSUNWcGJpVWdZeWd5S1NsY2JseHVURUZWVWw5d2NtVmpaVzUwWDJkeVpXRjBaWEpmTXlBOExTQmtabDlNUVZWU0xpQWxQaVZjYmlBZ1pIQnNlWEk2T21keWIzVndYMko1S0cxdmJuUm9MQ0J6YVhSbExDQjVaV0Z5S1NBbFBpVmNiaUFnWkhCc2VYSTZPbk4xYlcxaGNtbHpaU2hRWlhKalpXNTBZV2RsSUQwZ2JXVmhiaWhqYjI1a2FYUnBiMjVmYzJOdmNtVWdQRDBnTXlrcU1UQXdLVnh1VEVGVlVsOXdjbVZqWlc1MFgyZHlaV0YwWlhKZk0xeHVYRzVNUVZWU1gwSkRVMTl3WlhKalpXNTBZV2RsSUR3dElFeEJWVkpmY0hKbFkyVnVkRjluY21WaGRHVnlYek1nSlQ0bFhHNGdJR2RuY0d4dmRDaGhaWE1vZUNBOUlHMXZiblJvTENCNUlEMGdVR1Z5WTJWdWRHRm5aU2twSUN0Y2JpQWdJMmRsYjIxZlltRnlLSGRwWkhSb0lEMGdNQzQxTENCemRHRjBJRDBnWEZ4cFpHVnVkR2wwZVZ4Y0xDQndiM05wZEdsdmJpQTlJRnhjWm1sc2JGeGNLU0FyWEc0Z0lDQWdaMlZ2YlY5amIyd29LU3RjYmlBZ2RHaGxiV1ZmWW5jb0tTQXJYRzRnSUhSb1pXMWxLRnh1SUNBZ0lIQmhibVZzTG1keWFXUXViV0ZxYjNJZ1BTQmxiR1Z0Wlc1MFgySnNZVzVyS0Nrc1hHNGdJQ0FnY0dGdVpXd3VaM0pwWkM1dGFXNXZjaUE5SUdWc1pXMWxiblJmWW14aGJtc29LU3hjYmlBZ0lDQmhlR2x6TG5SbGVIUXVlQ0E5SUdWc1pXMWxiblJmZEdWNGRDaGhibWRzWlNBOUlEUTFMQ0IyYW5WemRDQTlJREVzSUdocWRYTjBJRDBnTVNrc1hHNGdJQ0FnWVhocGN5NTBhWFJzWlM1NUlEMGdaV3hsYldWdWRGOTBaWGgwS0hOcGVtVWdQU0J5Wld3b01TNHpLU3dnWVc1bmJHVWdQU0E1TUNrc1hHNGdJQ0FnWVhocGN5NTBhWFJzWlM1NElEMGdaV3hsYldWdWRGOTBaWGgwS0hOcGVtVWdQU0J5Wld3b01TNHpLU3dnWVc1bmJHVWdQU0F3S1N4Y2JpQWdJQ0JoZUdsekxuUmxlSFFnUFNCbGJHVnRaVzUwWDNSbGVIUW9jMmw2WlNBOUlERXlLVnh1SUNBcElDdGNiaUFnYkdGaWN5aGNiaUFnSUNCMGFYUnNaU0E5SUZ4Y1IyOXNaQ0JUZEdGeUlFSmxZV05vSUNVZ2IyWWdZbTlrZVNCamIyNWthWFJwYjI0Z2MyTnZjbVZ6SUQ0OUlETmNYQ3hjYmlBZ0lDQjRJRDBnWEZ4dGIyNTBhRnhjTEZ4dUlDQWdJSGtnUFNCY1hGQmxjbU5sYm5SaFoyVWdiMllnWW05a2VTQmpiMjVrYVhScGIyNGdjMk52Y21WeklENDlJRE5jWEZ4dUlDQXBJQ01yWm1GalpYUmZkM0poY0NoK2VXVmhjaWxjYmlBZ0l5c2djMk5oYkdWZmVGOWpiMjUwYVc1MWIzVnpLQ0JpY21WaGEzTWdQU0J6WlhFb05Td3hNaXdnWW5rZ1BURXBJQ2tyWEc0Z0lDTjViR2x0S0RBc05qQXBLeUJjYmlBZ0kzTmpZV3hsWDNsZlkyOXVkR2x1ZFc5MWN5aHNhVzFwZEhNZ1BTQmpLREFzTVRBd0tTd2dZbkpsWVd0eklEMGdjMlZ4S0RBc01UQXdMQ0JpZVNBOUlERXdLU2tnWEc1Y2JpQWdJQ0JjYmt4QlZWSmZRa05UWDNCbGNtTmxiblJoWjJWY2JseHVjR1JtS0hCaGMzUmxNQ2h3WVhSb0lEMGdYRnhNWVdKZlJHRjBZVjlVYVhOemRXVlFjbTlqWlhOemFXNW5MMjkxZEhCMWRGeGNMQ0JjWEM5TVFWVlNYMEpEVTE5d1pYSmpaVzUwWVdkbExuQmtabHhjS1N4b1pXbG5hSFFnUFNBM0xDQjNhV1IwYUNBOUlERXpLVnh1Y0hKcGJuUW9URUZWVWw5Q1ExTmZjR1Z5WTJWdWRHRm5aU2xjYm1SbGRpNXZabVlvS1NCY2JseHVYRzVjYm1CZ1lGeHVZR0JnSW4wPSAtLT5cblxuYGBgclxuYGBgclxuXG4jcmVtb3ZpbmcgMDgyM0ZFTkNfMjggYmNzIHdhcyBOQVxuZGZfTEFVUi4gPC0gZGZfTEFVUiU+JWZpbHRlcighcm93X251bWJlcigpICVpbiUgYygyKSlcblxuTEFVUl9wcmVjZW50X2dyZWF0ZXJfMyA8LSBkZl9MQVVSLiAlPiVcbiAgZHBseXI6Omdyb3VwX2J5KG1vbnRoLCBzaXRlLCB5ZWFyKSAlPiVcbiAgZHBseXI6OnN1bW1hcmlzZShQZXJjZW50YWdlID0gbWVhbihjb25kaXRpb25fc2NvcmUgPD0gMykqMTAwKVxuTEFVUl9wcmVjZW50X2dyZWF0ZXJfM1xuXG5MQVVSX0JDU19wZXJjZW50YWdlIDwtIExBVVJfcHJlY2VudF9ncmVhdGVyXzMgJT4lXG4gIGdncGxvdChhZXMoeCA9IG1vbnRoLCB5ID0gUGVyY2VudGFnZSkpICtcbiAgI2dlb21fYmFyKHdpZHRoID0gMC41LCBzdGF0ID0gXFxpZGVudGl0eVxcLCBwb3NpdGlvbiA9IFxcZmlsbFxcKSArXG4gICAgZ2VvbV9jb2woKStcbiAgdGhlbWVfYncoKSArXG4gIHRoZW1lKFxuICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksXG4gICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSxcbiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0ID0gMSksXG4gICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSA5MCksXG4gICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSxcbiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKVxuICApICtcbiAgbGFicyhcbiAgICB0aXRsZSA9IFxcR29sZCBTdGFyIEJlYWNoICUgb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDNcXCxcbiAgICB4ID0gXFxtb250aFxcLFxuICAgIHkgPSBcXFBlcmNlbnRhZ2Ugb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDNcXFxuICApICMrZmFjZXRfd3JhcCh+eWVhcilcbiAgIysgc2NhbGVfeF9jb250aW51b3VzKCBicmVha3MgPSBzZXEoNSwxMiwgYnkgPTEpICkrXG4gICN5bGltKDAsNjApKyBcbiAgI3NjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTAwKSwgYnJlYWtzID0gc2VxKDAsMTAwLCBieSA9IDEwKSkgXG5cbiAgICBcbkxBVVJfQkNTX3BlcmNlbnRhZ2VcblxucGRmKHBhc3RlMChwYXRoID0gXFxMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dFxcLCBcXC9MQVVSX0JDU19wZXJjZW50YWdlLnBkZlxcKSxoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxucHJpbnQoTEFVUl9CQ1NfcGVyY2VudGFnZSlcbmRldi5vZmYoKSBcblxuXG5cbmBgYFxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG4jcmVtb3ZpbmcgMDgyM0ZFTkNfMjggYmNzIHdhcyBOQVxuZGZfTEFVUi4gPC0gZGZfTEFVUiU+JWZpbHRlcighcm93X251bWJlcigpICVpbiUgYygyKSlcblxuTEFVUl9wcmVjZW50X2dyZWF0ZXJfMyA8LSBkZl9MQVVSLiAlPiVcbiAgZHBseXI6Omdyb3VwX2J5KG1vbnRoLCBzaXRlLCB5ZWFyKSAlPiVcbiAgZHBseXI6OnN1bW1hcmlzZShQZXJjZW50YWdlID0gbWVhbihjb25kaXRpb25fc2NvcmUgPD0gMykqMTAwKVxuTEFVUl9wcmVjZW50X2dyZWF0ZXJfM1xuXG5MQVVSX0JDU19wZXJjZW50YWdlIDwtIExBVVJfcHJlY2VudF9ncmVhdGVyXzMgJT4lXG4gIGdncGxvdChhZXMoeCA9IG1vbnRoLCB5ID0gUGVyY2VudGFnZSkpICtcbiAgI2dlb21fYmFyKHdpZHRoID0gMC41LCBzdGF0ID0gXFxpZGVudGl0eVxcLCBwb3NpdGlvbiA9IFxcZmlsbFxcKSArXG4gICAgZ2VvbV9jb2woKStcbiAgdGhlbWVfYncoKSArXG4gIHRoZW1lKFxuICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksXG4gICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSxcbiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0ID0gMSksXG4gICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSA5MCksXG4gICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSxcbiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKVxuICApICtcbiAgbGFicyhcbiAgICB0aXRsZSA9IFxcR29sZCBTdGFyIEJlYWNoICUgb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDNcXCxcbiAgICB4ID0gXFxtb250aFxcLFxuICAgIHkgPSBcXFBlcmNlbnRhZ2Ugb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDNcXFxuICApICMrZmFjZXRfd3JhcCh+eWVhcilcbiAgIysgc2NhbGVfeF9jb250aW51b3VzKCBicmVha3MgPSBzZXEoNSwxMiwgYnkgPTEpICkrXG4gICN5bGltKDAsNjApKyBcbiAgI3NjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTAwKSwgYnJlYWtzID0gc2VxKDAsMTAwLCBieSA9IDEwKSkgXG5cbiAgICBcbkxBVVJfQkNTX3BlcmNlbnRhZ2VcblxucGRmKHBhc3RlMChwYXRoID0gXFxMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dFxcLCBcXC9MQVVSX0JDU19wZXJjZW50YWdlLnBkZlxcKSxoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxucHJpbnQoTEFVUl9CQ1NfcGVyY2VudGFnZSlcbmRldi5vZmYoKSBcblxuXG5cbmBgYFxuYGBgIn0= -->

```r
```r

#removing 0823FENC_28 bcs was NA
df_LAUR. <- df_LAUR%>%filter(!row_number() %in% c(2))

LAUR_precent_greater_3 <- df_LAUR. %>%
  dplyr::group_by(month, site, year) %>%
  dplyr::summarise(Percentage = mean(condition_score <= 3)*100)
LAUR_precent_greater_3

LAUR_BCS_percentage <- LAUR_precent_greater_3 %>%
  ggplot(aes(x = month, y = Percentage)) +
  #geom_bar(width = 0.5, stat = \identity\, position = \fill\) +
    geom_col()+
  theme_bw() +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    axis.title.y = element_text(size = rel(1.3), angle = 90),
    axis.title.x = element_text(size = rel(1.3), angle = 0),
    axis.text = element_text(size = 12)
  ) +
  labs(
    title = \Gold Star Beach % of body condition scores >= 3\,
    x = \month\,
    y = \Percentage of body condition scores >= 3\
  ) #+facet_wrap(~year)
  #+ scale_x_continuous( breaks = seq(5,12, by =1) )+
  #ylim(0,60)+ 
  #scale_y_continuous(limits = c(0,100), breaks = seq(0,100, by = 10)) 

    
LAUR_BCS_percentage

pdf(paste0(path = \Lab_Data_TissueProcessing/output\, \/LAUR_BCS_percentage.pdf\),height = 7, width = 13)
print(LAUR_BCS_percentage)
dev.off() 

```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJME52WkdsdVp5Qm5jbUZ3YUhNZ1ptOXlJRXhKVXlCRGIyNW1aWEpsYm1ObElDMGdiMjVzZVNBeU1ESXpJR1JoZEdGY2JtUmhkR0ZmTWpBeU15QThMU0JrWVhSaFgyRnNiQ1UrSlNBZ1ptbHNkR1Z5S0NGNVpXRnlQVDFjSWpJd01qUmNJaWxjYmx4dVpHWmZRa05UWDNCeWIzQnZjblJwYjI1elBDMGdaR0YwWVY4eU1ESXpJQ1UrSlZ4dUlDQnRkWFJoZEdVb1kyOXVaR2wwYVc5dVgzTmpiM0psWDI1MWJXVnlhV01nUFNCaGN5NXVkVzFsY21saktHTnZibVJwZEdsdmJsOXpZMjl5WlNrc1kyOXVaR2wwYVc5dVgzTmpiM0psWDJKcGJpQTlJR05oYzJWZmQyaGxiaWhqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTVNCK0lGd2lNVndpTENCamIyNWthWFJwYjI1ZmMyTnZjbVVnUFQwZ01pQitYQ0l5WENJc1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOUlETWdmaUJjSWpOY0lpd2dZMjl1WkdsMGFXOXVYM05qYjNKbElEMDlJRFFnZmx3aU5Gd2lMR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0ExSUg0Z1hDSTFYQ0lzSUdOdmJtUnBkR2x2Ymw5elkyOXlaU0E5UFNBMklINWNJalpjSWl4amIyNWthWFJwYjI1ZmMyTnZjbVVnUFQwZ055QitJRndpTjF3aUxDQmpiMjVrYVhScGIyNWZjMk52Y21VZ1BUMGdPQ0IrWENJNFhDSXNJR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQVGtnZmx3aU9Wd2lMQ0JVVWxWRklINGdZWE11WTJoaGNtRmpkR1Z5S0dOdmJtUnBkR2x2Ymw5elkyOXlaU2twS1NBbFBpVmNiaUFnWjNKdmRYQmZZbmtvYzJsMFpTd2diVzl1ZEdnc0lHTnZibVJwZEdsdmJsOXpZMjl5WlY5aWFXNHBJQ1UrSlNCa2NHeDVjaUE2T25OMWJXMWhjbWx6WlNoRGIzVnVkRDBnYmlncEtTQWxQaVZjYmlBZ2RXNW5jbTkxY0NncElDVStKVnh1SUNCdGRYUmhkR1VvVUhKdmNHOXlkR2x2YmlBOUlFTnZkVzUwTDNOMWJTaERiM1Z1ZENrcFhHNWNibVJtWDBKRFUxOXdjbTl3YjNKMGFXOXVjend0SUc1aExtOXRhWFFvWkdaZlFrTlRYM0J5YjNCdmNuUnBiMjV6S1Z4dVhHNWtabDlDUTFOZmNISnZjRzl5ZEdsdmJuTWtiVzl1ZEdnZ1BDMGdabUZqZEc5eUtHUm1YMEpEVTE5d2NtOXdiM0owYVc5dWN5UnRiMjUwYUN3Z2JHVjJaV3h6SUQwZ1l5aGNJalZjSWl4Y0lqWmNJaXhjSWpkY0lpd2dYQ0k0WENJc0lGd2lPVndpTENCY0lqRXdYQ0lzSUZ3aU1URmNJaWtzWEc0Z0lDQWdJQ0FnSUd4aFltVnNjejFqS0Z3aVRXRjVYQ0lzSUZ3aVNuVnVaVndpTENCY0lrcDFiSGxjSWl3Z1hDSkJkV2RjSWl3Z1hDSlRaWEIwWENJc0lGd2lUMk4wWENJc0lGd2lUbTkyWENJcEtWeHVaR1pmUWtOVFgzQnliM0J2Y25ScGIyNXpKSE5wZEdVZ1BDMGdabUZqZEc5eUtHUm1YMEpEVTE5d2NtOXdiM0owYVc5dWN5UnphWFJsTENCc1pYWmxiSE1nUFNCaktGd2lRVk5JUTF3aUxGd2lSa1ZPUTF3aUxGd2lSMDlNUkZ3aUxDQmNJa3hCVlZKY0lpa3NYRzRnSUNBZ0lDQWdJR3hoWW1Wc2N6MWpLRndpUVhOb0lFTnlaV1ZyWENJc0lGd2lSbVZ1WTJVZ1EzSmxaV3RjSWl3Z1hDSkhiMnhrSUZOMFlYSmNJaXdnWENKTVlYVnlaV3dnU0c5c2JHOTNYQ0lwS1Z4dVhHNWlZM011Y0hKdmNDNHlNREl6SUR3dElHZG5jR3h2ZENoa1lYUmhQV1JtWDBKRFUxOXdjbTl3YjNKMGFXOXVjeXdnWVdWektIZzliVzl1ZEdnc0lIazlJRkJ5YjNCdmNuUnBiMjRzSUdacGJHdzlZMjl1WkdsMGFXOXVYM05qYjNKbFgySnBiaWtwSUN0Y2JpQWdaMlZ2YlY5aVlYSW9kMmxrZEdnZ1BTQXVOU3dnYzNSaGREMWNJbWxrWlc1MGFYUjVYQ0lzSUhCdmMybDBhVzl1SUQwZ1hDSm1hV3hzWENJc0lHTnZiRzkxY2lBOUlGd2lZbXhoWTJ0Y0lpa3JJQ0JjYmlBZ0lIUm9aVzFsWDJKM0tDa2dLeUFnZEdobGJXVW9jR0Z1Wld3dVozSnBaQzV0YVc1dmNpQTlJR1ZzWlcxbGJuUmZZbXhoYm1zb0tTa3JJRnh1SUNCMGFHVnRaU2hoZUdsekxuUmxlSFF1ZUNBOUlHVnNaVzFsYm5SZmRHVjRkQ2hoYm1kc1pTQTlJRFExTENCMmFuVnpkQ0E5SURFc0lHaHFkWE4wUFRFc0lITnBlbVVnUFNCeVpXd29MamtwS1NrclhHNGdJSFJvWlcxbEtIQmhibVZzTG1keWFXUXViV0ZxYjNJdWVDQTlaV3hsYldWdWRGOWliR0Z1YXlncEtTdGNiaUFnYkdGaWN5aDBhWFJzWlQxY0lrSnZaSGtnWTI5dVpHbDBhVzl1SUhOamIzSmxjeUJwYmlBeU1ESXpYQ0lzSUhnZ1BWd2lUVzl1ZEdoY0lpd2dlU0E5SUZ3aVVISnZjRzl5ZEdsdmJpQnZaaUJpYjJSNUlHTnZibVJwZEdsdmJpQnpZMjl5WlhNZ1hDSXBLeUIwYUdWdFpTaGhlR2x6TG5ScGRHeGxMbmtnUFNCbGJHVnRaVzUwWDNSbGVIUW9jMmw2WlNBOUlISmxiQ2d4TGpJcExDQmhibWRzWlNBOU9UQXBMQ0JoZUdsekxuUnBkR3hsTG5nZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvYzJsNlpTQTlJSEpsYkNneExqSXBMQ0JoYm1kc1pTQTlJREFwS1NzZ2MyTmhiR1ZmWm1sc2JGOWljbVYzWlhJb2NHRnNaWFIwWlNBOUlGd2lRbXgxWlhOY0lpa2dLMXh1SUNCMGFHVnRaU2h6ZEhKcGNDNTBaWGgwSUQwZ1pXeGxiV1Z1ZEY5MFpYaDBLSE5wZW1VZ1BTQXhOU2twSzF4dUlDQjBhR1Z0WlNBb2JHVm5aVzVrTG5ScGRHeGxJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNBeE9Da3BLMXh1SUNCMGFHVnRaU2gwYVhSc1pTQTlJR1ZzWlcxbGJuUmZkR1Y0ZENoemFYcGxJRDBnTVRjcEtTdGNiaUFnZEdobGJXVW9ZWGhwY3k1MFpYaDBQV1ZzWlcxbGJuUmZkR1Y0ZENoemFYcGxQVEUzS1NrclhHNGdJR3hoWW5Nb1ptbHNiQ0E5WENKQ2IyUjVJRU52Ym1ScGRHbHZiaUJUWTI5eVpWd2lLU3RjYmlBZ1ptRmpaWFJmZDNKaGNDaCtJSE5wZEdVZ0tWeHVZbU56TG5CeWIzQXVNakF5TTF4dVhHNGpjR1JtS0hCaGMzUmxNQ2h3WVhSb0lEMGdYQ0pNWVdKZlJHRjBZVjlVYVhOemRXVlFjbTlqWlhOemFXNW5MMjkxZEhCMWRGd2lJQ3hjSWk5Q1ExTmZjSEp2Y0c5eWRHbHZibDh5TURJekxuQmtabHdpS1N3Z2FHVnBaMmgwSUQwZ055d2dkMmxrZEdnZ1BTQXhNeWxjYmlOd2NtbHVkQ2hpWTNNdWNISnZjQzR5TURJektWeHVJMlJsZGk1dlptWW9LVnh1WEc0alFrTlRYM0J5YjNCdmNuUnBiMjVmWVd4c0szTmpZV3hsWDJacGJHeGZiV0Z1ZFdGc0tIWmhiSFZsY3lBOUlHTW9YQ0lqTURBelF6TXdYQ0lzWENJak1ERTJOalZGWENJc1hDSWpPREJEUkVNeFhDSXNYQ0lqUXpkRlFVVTFYQ0lzWENJalJqWkZPRU16WENJc1hDSWpSRVpETWpkRVhDSXNYQ0lqUWtZNE1USkVYQ0lzSUZ3aUl6aEROVEV3UVZ3aUxGd2lJelUwTXpBd05Wd2lJQ2twWEc0amMyTmhiR1ZmWm1sc2JGOXRZVzUxWVd3b2RtRnNkV1Z6SUQwZ1l5aGNJaU13TURORE16QmNJaXhjSWlNd01UWTJOVVZjSWl4Y0lpTTRNRU5FUXpGY0lpeGNJaU5ETjBWQlJUVmNJaXhjSW1GNmRYSmxNVndpTEZ3aWMyeGhkR1ZuY21GNU1Wd2lMRndpYzJ4aGRHVm5jbUY1TTF3aUxDQmNJbk5zWVhSbFozSmhlVFJjSWl3Z1hDSm5jbUY1TWpWY0lpQXBLU0JjYmx4dVppQThMU0JtZFc1amRHbHZiaWh3WVd3cElHSnlaWGRsY2k1d1lXd29ZbkpsZDJWeUxuQmhiQzVwYm1adlczQmhiQ3dnWENKdFlYaGpiMnh2Y25OY0lsMHNJSEJoYkNsY2JpaGpiMnh6SUR3dElHWW9YQ0paYkVkdVFuVmNJaWtwWEc1Z1lHQWlmUT09IC0tPlxuXG5gYGByXG4jQ29kaW5nIGdyYXBocyBmb3IgTElTIENvbmZlcmVuY2UgLSBvbmx5IDIwMjMgZGF0YVxuZGF0YV8yMDIzIDwtIGRhdGFfYWxsJT4lICBmaWx0ZXIoIXllYXI9PVxcMjAyNFxcKVxuXG5kZl9CQ1NfcHJvcG9ydGlvbnM8LSBkYXRhXzIwMjMgJT4lXG4gIG11dGF0ZShjb25kaXRpb25fc2NvcmVfbnVtZXJpYyA9IGFzLm51bWVyaWMoY29uZGl0aW9uX3Njb3JlKSxjb25kaXRpb25fc2NvcmVfYmluID0gY2FzZV93aGVuKGNvbmRpdGlvbl9zY29yZSA9PSAxIH4gXFwxXFwsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH5cXDJcXCxjb25kaXRpb25fc2NvcmUgPT0gMyB+IFxcM1xcLCBjb25kaXRpb25fc2NvcmUgPT0gNCB+XFw0XFwsY29uZGl0aW9uX3Njb3JlID09IDUgfiBcXDVcXCwgY29uZGl0aW9uX3Njb3JlID09IDYgflxcNlxcLGNvbmRpdGlvbl9zY29yZSA9PSA3IH4gXFw3XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH5cXDhcXCwgY29uZGl0aW9uX3Njb3JlID09OSB+XFw5XFwsIFRSVUUgfiBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uX3Njb3JlKSkpICU+JVxuICBncm91cF9ieShzaXRlLCBtb250aCwgY29uZGl0aW9uX3Njb3JlX2JpbikgJT4lIGRwbHlyIDo6c3VtbWFyaXNlKENvdW50PSBuKCkpICU+JVxuICB1bmdyb3VwKCkgJT4lXG4gIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSlcblxuZGZfQkNTX3Byb3BvcnRpb25zPC0gbmEub21pdChkZl9CQ1NfcHJvcG9ydGlvbnMpXG5cbmRmX0JDU19wcm9wb3J0aW9ucyRtb250aCA8LSBmYWN0b3IoZGZfQkNTX3Byb3BvcnRpb25zJG1vbnRoLCBsZXZlbHMgPSBjKFxcNVxcLFxcNlxcLFxcN1xcLCBcXDhcXCwgXFw5XFwsIFxcMTBcXCwgXFwxMVxcKSxcbiAgICAgICAgbGFiZWxzPWMoXFxNYXlcXCwgXFxKdW5lXFwsIFxcSnVseVxcLCBcXEF1Z1xcLCBcXFNlcHRcXCwgXFxPY3RcXCwgXFxOb3ZcXCkpXG5kZl9CQ1NfcHJvcG9ydGlvbnMkc2l0ZSA8LSBmYWN0b3IoZGZfQkNTX3Byb3BvcnRpb25zJHNpdGUsIGxldmVscyA9IGMoXFxBU0hDXFwsXFxGRU5DXFwsXFxHT0xEXFwsIFxcTEFVUlxcKSxcbiAgICAgICAgbGFiZWxzPWMoXFxBc2ggQ3JlZWtcXCwgXFxGZW5jZSBDcmVla1xcLCBcXEdvbGQgU3RhclxcLCBcXExhdXJlbCBIb2xsb3dcXCkpXG5cbmJjcy5wcm9wLjIwMjMgPC0gZ2dwbG90KGRhdGE9ZGZfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgK1xuICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PVxcaWRlbnRpdHlcXCwgcG9zaXRpb24gPSBcXGZpbGxcXCwgY29sb3VyID0gXFxibGFja1xcKSsgIFxuICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSwgc2l6ZSA9IHJlbCguOSkpKStcbiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvci54ID1lbGVtZW50X2JsYW5rKCkpK1xuICBsYWJzKHRpdGxlPVxcQm9keSBjb25kaXRpb24gc2NvcmVzIGluIDIwMjNcXCwgeCA9XFxNb250aFxcLCB5ID0gXFxQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyBcXCkrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGFuZ2xlID0gMCkpKyBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gXFxCbHVlc1xcKSArXG4gIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkrXG4gIHRoZW1lIChsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSkrXG4gIHRoZW1lKHRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNykpK1xuICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTcpKStcbiAgbGFicyhmaWxsID1cXEJvZHkgQ29uZGl0aW9uIFNjb3JlXFwpK1xuICBmYWNldF93cmFwKH4gc2l0ZSApXG5iY3MucHJvcC4yMDIzXG5cbiNwZGYocGFzdGUwKHBhdGggPSBcXExhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFwgLFxcL0JDU19wcm9wb3J0aW9uXzIwMjMucGRmXFwpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxuI3ByaW50KGJjcy5wcm9wLjIwMjMpXG4jZGV2Lm9mZigpXG5cbiNCQ1NfcHJvcG9ydGlvbl9hbGwrc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYyhcXCMwMDNDMzBcXCxcXCMwMTY2NUVcXCxcXCM4MENEQzFcXCxcXCNDN0VBRTVcXCxcXCNGNkU4QzNcXCxcXCNERkMyN0RcXCxcXCNCRjgxMkRcXCwgXFwjOEM1MTBBXFwsXFwjNTQzMDA1XFwgKSlcbiNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKFxcIzAwM0MzMFxcLFxcIzAxNjY1RVxcLFxcIzgwQ0RDMVxcLFxcI0M3RUFFNVxcLFxcYXp1cmUxXFwsXFxzbGF0ZWdyYXkxXFwsXFxzbGF0ZWdyYXkzXFwsIFxcc2xhdGVncmF5NFxcLCBcXGdyYXkyNVxcICkpIFxuXG5mIDwtIGZ1bmN0aW9uKHBhbCkgYnJld2VyLnBhbChicmV3ZXIucGFsLmluZm9bcGFsLCBcXG1heGNvbG9yc1xcXSwgcGFsKVxuKGNvbHMgPC0gZihcXFlsR25CdVxcKSlcbmBgYFxuXG48IS0tIHJuYi1zb3VyY2UtZW5kIC0tPlxuIn0= -->
#Coding graphs for LIS Conference - only 2023 data
data_2023 <- data_all%>%  filter(!year==\2024\)

df_BCS_proportions<- data_2023 %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ \1\, condition_score == 2 ~\2\,condition_score == 3 ~ \3\, condition_score == 4 ~\4\,condition_score == 5 ~ \5\, condition_score == 6 ~\6\,condition_score == 7 ~ \7\, condition_score == 8 ~\8\, condition_score ==9 ~\9\, TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, condition_score_bin) %>% dplyr ::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))

df_BCS_proportions<- na.omit(df_BCS_proportions)

df_BCS_proportions$month <- factor(df_BCS_proportions$month, levels = c(\5\,\6\,\7\, \8\, \9\, \10\, \11\),
        labels=c(\May\, \June\, \July\, \Aug\, \Sept\, \Oct\, \Nov\))
df_BCS_proportions$site <- factor(df_BCS_proportions$site, levels = c(\ASHC\,\FENC\,\GOLD\, \LAUR\),
        labels=c(\Ash Creek\, \Fence Creek\, \Gold Star\, \Laurel Hollow\))

bcs.prop.2023 <- ggplot(data=df_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\, colour = \black\)+  
   theme_bw() +  theme(panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1, size = rel(.9)))+
  theme(panel.grid.major.x =element_blank())+
  labs(title=\Body condition scores in 2023\, x =\Month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.2), angle =90), axis.title.x = element_text(size = rel(1.2), angle = 0))+ scale_fill_brewer(palette = \Blues\) +
  theme(strip.text = element_text(size = 15))+
  theme (legend.title = element_text(size = 18))+
  theme(title = element_text(size = 17))+
  theme(axis.text=element_text(size=17))+
  labs(fill =\Body Condition Score\)+
  facet_wrap(~ site )
bcs.prop.2023

#pdf(paste0(path = \Lab_Data_TissueProcessing/output\ ,\/BCS_proportion_2023.pdf\), height = 7, width = 13)
#print(bcs.prop.2023)
#dev.off()

#BCS_proportion_all+scale_fill_manual(values = c(\#003C30\,\#01665E\,\#80CDC1\,\#C7EAE5\,\#F6E8C3\,\#DFC27D\,\#BF812D\, \#8C510A\,\#543005\ ))
#scale_fill_manual(values = c(\#003C30\,\#01665E\,\#80CDC1\,\#C7EAE5\,\azure1\,\slategray1\,\slategray3\, \slategray4\, \gray25\ )) 

f <- function(pal) brewer.pal(brewer.pal.info[pal, \maxcolors\], pal)
(cols <- f(\YlGnBu\))



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dUkwTnZaR2x1WnlCbmNtRndhSE1nWm05eUlFeEpVeUJEYjI1bVpYSmxibU5sSUMwZ2IyNXNlU0F5TURJeklHUmhkR0ZjYm1SaGRHRmZNakF5TXlBOExTQmtZWFJoWDJGc2JDVStKU0FnWm1sc2RHVnlLQ0Y1WldGeVBUMWNYREl3TWpSY1hDbGNibHh1WkdaZlFrTlRYM0J5YjNCdmNuUnBiMjV6UEMwZ1pHRjBZVjh5TURJeklDVStKVnh1SUNCdGRYUmhkR1VvWTI5dVpHbDBhVzl1WDNOamIzSmxYMjUxYldWeWFXTWdQU0JoY3k1dWRXMWxjbWxqS0dOdmJtUnBkR2x2Ymw5elkyOXlaU2tzWTI5dVpHbDBhVzl1WDNOamIzSmxYMkpwYmlBOUlHTmhjMlZmZDJobGJpaGpiMjVrYVhScGIyNWZjMk52Y21VZ1BUMGdNU0IrSUZ4Y01WeGNMQ0JqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTWlCK1hGd3lYRndzWTI5dVpHbDBhVzl1WDNOamIzSmxJRDA5SURNZ2ZpQmNYRE5jWEN3Z1kyOXVaR2wwYVc5dVgzTmpiM0psSUQwOUlEUWdmbHhjTkZ4Y0xHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBTQTFJSDRnWEZ3MVhGd3NJR052Ym1ScGRHbHZibDl6WTI5eVpTQTlQU0EySUg1Y1hEWmNYQ3hqYjI1a2FYUnBiMjVmYzJOdmNtVWdQVDBnTnlCK0lGeGNOMXhjTENCamIyNWthWFJwYjI1ZmMyTnZjbVVnUFQwZ09DQitYRnc0WEZ3c0lHTnZibVJwZEdsdmJsOXpZMjl5WlNBOVBUa2dmbHhjT1Z4Y0xDQlVVbFZGSUg0Z1lYTXVZMmhoY21GamRHVnlLR052Ym1ScGRHbHZibDl6WTI5eVpTa3BLU0FsUGlWY2JpQWdaM0p2ZFhCZllua29jMmwwWlN3Z2JXOXVkR2dzSUdOdmJtUnBkR2x2Ymw5elkyOXlaVjlpYVc0cElDVStKU0JrY0d4NWNpQTZPbk4xYlcxaGNtbHpaU2hEYjNWdWREMGdiaWdwS1NBbFBpVmNiaUFnZFc1bmNtOTFjQ2dwSUNVK0pWeHVJQ0J0ZFhSaGRHVW9VSEp2Y0c5eWRHbHZiaUE5SUVOdmRXNTBMM04xYlNoRGIzVnVkQ2twWEc1Y2JtUm1YMEpEVTE5d2NtOXdiM0owYVc5dWN6d3RJRzVoTG05dGFYUW9aR1pmUWtOVFgzQnliM0J2Y25ScGIyNXpLVnh1WEc1a1psOUNRMU5mY0hKdmNHOXlkR2x2Ym5Na2JXOXVkR2dnUEMwZ1ptRmpkRzl5S0dSbVgwSkRVMTl3Y205d2IzSjBhVzl1Y3lSdGIyNTBhQ3dnYkdWMlpXeHpJRDBnWXloY1hEVmNYQ3hjWERaY1hDeGNYRGRjWEN3Z1hGdzRYRndzSUZ4Y09WeGNMQ0JjWERFd1hGd3NJRnhjTVRGY1hDa3NYRzRnSUNBZ0lDQWdJR3hoWW1Wc2N6MWpLRnhjVFdGNVhGd3NJRnhjU25WdVpWeGNMQ0JjWEVwMWJIbGNYQ3dnWEZ4QmRXZGNYQ3dnWEZ4VFpYQjBYRndzSUZ4Y1QyTjBYRndzSUZ4Y1RtOTJYRndwS1Z4dVpHWmZRa05UWDNCeWIzQnZjblJwYjI1ekpITnBkR1VnUEMwZ1ptRmpkRzl5S0dSbVgwSkRVMTl3Y205d2IzSjBhVzl1Y3lSemFYUmxMQ0JzWlhabGJITWdQU0JqS0Z4Y1FWTklRMXhjTEZ4Y1JrVk9RMXhjTEZ4Y1IwOU1SRnhjTENCY1hFeEJWVkpjWENrc1hHNGdJQ0FnSUNBZ0lHeGhZbVZzY3oxaktGeGNRWE5vSUVOeVpXVnJYRndzSUZ4Y1JtVnVZMlVnUTNKbFpXdGNYQ3dnWEZ4SGIyeGtJRk4wWVhKY1hDd2dYRnhNWVhWeVpXd2dTRzlzYkc5M1hGd3BLVnh1WEc1aVkzTXVjSEp2Y0M0eU1ESXpJRHd0SUdkbmNHeHZkQ2hrWVhSaFBXUm1YMEpEVTE5d2NtOXdiM0owYVc5dWN5d2dZV1Z6S0hnOWJXOXVkR2dzSUhrOUlGQnliM0J2Y25ScGIyNHNJR1pwYkd3OVkyOXVaR2wwYVc5dVgzTmpiM0psWDJKcGJpa3BJQ3RjYmlBZ1oyVnZiVjlpWVhJb2QybGtkR2dnUFNBdU5Td2djM1JoZEQxY1hHbGtaVzUwYVhSNVhGd3NJSEJ2YzJsMGFXOXVJRDBnWEZ4bWFXeHNYRndzSUdOdmJHOTFjaUE5SUZ4Y1lteGhZMnRjWENrcklDQmNiaUFnSUhSb1pXMWxYMkozS0NrZ0t5QWdkR2hsYldVb2NHRnVaV3d1WjNKcFpDNXRhVzV2Y2lBOUlHVnNaVzFsYm5SZllteGhibXNvS1NrcklGeHVJQ0IwYUdWdFpTaGhlR2x6TG5SbGVIUXVlQ0E5SUdWc1pXMWxiblJmZEdWNGRDaGhibWRzWlNBOUlEUTFMQ0IyYW5WemRDQTlJREVzSUdocWRYTjBQVEVzSUhOcGVtVWdQU0J5Wld3b0xqa3BLU2tyWEc0Z0lIUm9aVzFsS0hCaGJtVnNMbWR5YVdRdWJXRnFiM0l1ZUNBOVpXeGxiV1Z1ZEY5aWJHRnVheWdwS1N0Y2JpQWdiR0ZpY3loMGFYUnNaVDFjWEVKdlpIa2dZMjl1WkdsMGFXOXVJSE5qYjNKbGN5QnBiaUF5TURJelhGd3NJSGdnUFZ4Y1RXOXVkR2hjWEN3Z2VTQTlJRnhjVUhKdmNHOXlkR2x2YmlCdlppQmliMlI1SUdOdmJtUnBkR2x2YmlCelkyOXlaWE1nWEZ3cEt5QjBhR1Z0WlNoaGVHbHpMblJwZEd4bExua2dQU0JsYkdWdFpXNTBYM1JsZUhRb2MybDZaU0E5SUhKbGJDZ3hMaklwTENCaGJtZHNaU0E5T1RBcExDQmhlR2x6TG5ScGRHeGxMbmdnUFNCbGJHVnRaVzUwWDNSbGVIUW9jMmw2WlNBOUlISmxiQ2d4TGpJcExDQmhibWRzWlNBOUlEQXBLU3NnYzJOaGJHVmZabWxzYkY5aWNtVjNaWElvY0dGc1pYUjBaU0E5SUZ4Y1FteDFaWE5jWENrZ0sxeHVJQ0IwYUdWdFpTaHpkSEpwY0M1MFpYaDBJRDBnWld4bGJXVnVkRjkwWlhoMEtITnBlbVVnUFNBeE5Ta3BLMXh1SUNCMGFHVnRaU0FvYkdWblpXNWtMblJwZEd4bElEMGdaV3hsYldWdWRGOTBaWGgwS0hOcGVtVWdQU0F4T0NrcEsxeHVJQ0IwYUdWdFpTaDBhWFJzWlNBOUlHVnNaVzFsYm5SZmRHVjRkQ2h6YVhwbElEMGdNVGNwS1N0Y2JpQWdkR2hsYldVb1lYaHBjeTUwWlhoMFBXVnNaVzFsYm5SZmRHVjRkQ2h6YVhwbFBURTNLU2tyWEc0Z0lHeGhZbk1vWm1sc2JDQTlYRnhDYjJSNUlFTnZibVJwZEdsdmJpQlRZMjl5WlZ4Y0tTdGNiaUFnWm1GalpYUmZkM0poY0NoK0lITnBkR1VnS1Z4dVltTnpMbkJ5YjNBdU1qQXlNMXh1WEc0amNHUm1LSEJoYzNSbE1DaHdZWFJvSUQwZ1hGeE1ZV0pmUkdGMFlWOVVhWE56ZFdWUWNtOWpaWE56YVc1bkwyOTFkSEIxZEZ4Y0lDeGNYQzlDUTFOZmNISnZjRzl5ZEdsdmJsOHlNREl6TG5Ca1pseGNLU3dnYUdWcFoyaDBJRDBnTnl3Z2QybGtkR2dnUFNBeE15bGNiaU53Y21sdWRDaGlZM011Y0hKdmNDNHlNREl6S1Z4dUkyUmxkaTV2Wm1Zb0tWeHVYRzRqUWtOVFgzQnliM0J2Y25ScGIyNWZZV3hzSzNOallXeGxYMlpwYkd4ZmJXRnVkV0ZzS0haaGJIVmxjeUE5SUdNb1hGd2pNREF6UXpNd1hGd3NYRndqTURFMk5qVkZYRndzWEZ3ak9EQkRSRU14WEZ3c1hGd2pRemRGUVVVMVhGd3NYRndqUmpaRk9FTXpYRndzWEZ3alJFWkRNamRFWEZ3c1hGd2pRa1k0TVRKRVhGd3NJRnhjSXpoRE5URXdRVnhjTEZ4Y0l6VTBNekF3TlZ4Y0lDa3BYRzRqYzJOaGJHVmZabWxzYkY5dFlXNTFZV3dvZG1Gc2RXVnpJRDBnWXloY1hDTXdNRE5ETXpCY1hDeGNYQ013TVRZMk5VVmNYQ3hjWENNNE1FTkVRekZjWEN4Y1hDTkROMFZCUlRWY1hDeGNYR0Y2ZFhKbE1WeGNMRnhjYzJ4aGRHVm5jbUY1TVZ4Y0xGeGNjMnhoZEdWbmNtRjVNMXhjTENCY1hITnNZWFJsWjNKaGVUUmNYQ3dnWEZ4bmNtRjVNalZjWENBcEtTQmNibHh1WmlBOExTQm1kVzVqZEdsdmJpaHdZV3dwSUdKeVpYZGxjaTV3WVd3b1luSmxkMlZ5TG5CaGJDNXBibVp2VzNCaGJDd2dYRnh0WVhoamIyeHZjbk5jWEYwc0lIQmhiQ2xjYmloamIyeHpJRHd0SUdZb1hGeFpiRWR1UW5WY1hDa3BYRzVnWUdCY2JtQmdZQ0o5IC0tPlxuXG5gYGByXG5gYGByXG4jQ29kaW5nIGdyYXBocyBmb3IgTElTIENvbmZlcmVuY2UgLSBvbmx5IDIwMjMgZGF0YVxuZGF0YV8yMDIzIDwtIGRhdGFfYWxsJT4lICBmaWx0ZXIoIXllYXI9PVxcMjAyNFxcKVxuXG5kZl9CQ1NfcHJvcG9ydGlvbnM8LSBkYXRhXzIwMjMgJT4lXG4gIG11dGF0ZShjb25kaXRpb25fc2NvcmVfbnVtZXJpYyA9IGFzLm51bWVyaWMoY29uZGl0aW9uX3Njb3JlKSxjb25kaXRpb25fc2NvcmVfYmluID0gY2FzZV93aGVuKGNvbmRpdGlvbl9zY29yZSA9PSAxIH4gXFwxXFwsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH5cXDJcXCxjb25kaXRpb25fc2NvcmUgPT0gMyB+IFxcM1xcLCBjb25kaXRpb25fc2NvcmUgPT0gNCB+XFw0XFwsY29uZGl0aW9uX3Njb3JlID09IDUgfiBcXDVcXCwgY29uZGl0aW9uX3Njb3JlID09IDYgflxcNlxcLGNvbmRpdGlvbl9zY29yZSA9PSA3IH4gXFw3XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH5cXDhcXCwgY29uZGl0aW9uX3Njb3JlID09OSB+XFw5XFwsIFRSVUUgfiBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uX3Njb3JlKSkpICU+JVxuICBncm91cF9ieShzaXRlLCBtb250aCwgY29uZGl0aW9uX3Njb3JlX2JpbikgJT4lIGRwbHlyIDo6c3VtbWFyaXNlKENvdW50PSBuKCkpICU+JVxuICB1bmdyb3VwKCkgJT4lXG4gIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSlcblxuZGZfQkNTX3Byb3BvcnRpb25zPC0gbmEub21pdChkZl9CQ1NfcHJvcG9ydGlvbnMpXG5cbmRmX0JDU19wcm9wb3J0aW9ucyRtb250aCA8LSBmYWN0b3IoZGZfQkNTX3Byb3BvcnRpb25zJG1vbnRoLCBsZXZlbHMgPSBjKFxcNVxcLFxcNlxcLFxcN1xcLCBcXDhcXCwgXFw5XFwsIFxcMTBcXCwgXFwxMVxcKSxcbiAgICAgICAgbGFiZWxzPWMoXFxNYXlcXCwgXFxKdW5lXFwsIFxcSnVseVxcLCBcXEF1Z1xcLCBcXFNlcHRcXCwgXFxPY3RcXCwgXFxOb3ZcXCkpXG5kZl9CQ1NfcHJvcG9ydGlvbnMkc2l0ZSA8LSBmYWN0b3IoZGZfQkNTX3Byb3BvcnRpb25zJHNpdGUsIGxldmVscyA9IGMoXFxBU0hDXFwsXFxGRU5DXFwsXFxHT0xEXFwsIFxcTEFVUlxcKSxcbiAgICAgICAgbGFiZWxzPWMoXFxBc2ggQ3JlZWtcXCwgXFxGZW5jZSBDcmVla1xcLCBcXEdvbGQgU3RhclxcLCBcXExhdXJlbCBIb2xsb3dcXCkpXG5cbmJjcy5wcm9wLjIwMjMgPC0gZ2dwbG90KGRhdGE9ZGZfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgK1xuICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PVxcaWRlbnRpdHlcXCwgcG9zaXRpb24gPSBcXGZpbGxcXCwgY29sb3VyID0gXFxibGFja1xcKSsgIFxuICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgXG4gIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSwgc2l6ZSA9IHJlbCguOSkpKStcbiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvci54ID1lbGVtZW50X2JsYW5rKCkpK1xuICBsYWJzKHRpdGxlPVxcQm9keSBjb25kaXRpb24gc2NvcmVzIGluIDIwMjNcXCwgeCA9XFxNb250aFxcLCB5ID0gXFxQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyBcXCkrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGFuZ2xlID0gMCkpKyBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gXFxCbHVlc1xcKSArXG4gIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkrXG4gIHRoZW1lIChsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSkrXG4gIHRoZW1lKHRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNykpK1xuICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTcpKStcbiAgbGFicyhmaWxsID1cXEJvZHkgQ29uZGl0aW9uIFNjb3JlXFwpK1xuICBmYWNldF93cmFwKH4gc2l0ZSApXG5iY3MucHJvcC4yMDIzXG5cbiNwZGYocGFzdGUwKHBhdGggPSBcXExhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFwgLFxcL0JDU19wcm9wb3J0aW9uXzIwMjMucGRmXFwpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKVxuI3ByaW50KGJjcy5wcm9wLjIwMjMpXG4jZGV2Lm9mZigpXG5cbiNCQ1NfcHJvcG9ydGlvbl9hbGwrc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYyhcXCMwMDNDMzBcXCxcXCMwMTY2NUVcXCxcXCM4MENEQzFcXCxcXCNDN0VBRTVcXCxcXCNGNkU4QzNcXCxcXCNERkMyN0RcXCxcXCNCRjgxMkRcXCwgXFwjOEM1MTBBXFwsXFwjNTQzMDA1XFwgKSlcbiNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKFxcIzAwM0MzMFxcLFxcIzAxNjY1RVxcLFxcIzgwQ0RDMVxcLFxcI0M3RUFFNVxcLFxcYXp1cmUxXFwsXFxzbGF0ZWdyYXkxXFwsXFxzbGF0ZWdyYXkzXFwsIFxcc2xhdGVncmF5NFxcLCBcXGdyYXkyNVxcICkpIFxuXG5mIDwtIGZ1bmN0aW9uKHBhbCkgYnJld2VyLnBhbChicmV3ZXIucGFsLmluZm9bcGFsLCBcXG1heGNvbG9yc1xcXSwgcGFsKVxuKGNvbHMgPC0gZihcXFlsR25CdVxcKSlcbmBgYFxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuI0NvZGluZyBncmFwaHMgZm9yIExJUyBDb25mZXJlbmNlIC0gb25seSAyMDIzIGRhdGFcbmRhdGFfMjAyMyA8LSBkYXRhX2FsbCU+JSAgZmlsdGVyKCF5ZWFyPT1cXDIwMjRcXClcblxuZGZfQkNTX3Byb3BvcnRpb25zPC0gZGF0YV8yMDIzICU+JVxuICBtdXRhdGUoY29uZGl0aW9uX3Njb3JlX251bWVyaWMgPSBhcy5udW1lcmljKGNvbmRpdGlvbl9zY29yZSksY29uZGl0aW9uX3Njb3JlX2JpbiA9IGNhc2Vfd2hlbihjb25kaXRpb25fc2NvcmUgPT0gMSB+IFxcMVxcLCBjb25kaXRpb25fc2NvcmUgPT0gMiB+XFwyXFwsY29uZGl0aW9uX3Njb3JlID09IDMgfiBcXDNcXCwgY29uZGl0aW9uX3Njb3JlID09IDQgflxcNFxcLGNvbmRpdGlvbl9zY29yZSA9PSA1IH4gXFw1XFwsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH5cXDZcXCxjb25kaXRpb25fc2NvcmUgPT0gNyB+IFxcN1xcLCBjb25kaXRpb25fc2NvcmUgPT0gOCB+XFw4XFwsIGNvbmRpdGlvbl9zY29yZSA9PTkgflxcOVxcLCBUUlVFIH4gYXMuY2hhcmFjdGVyKGNvbmRpdGlvbl9zY29yZSkpKSAlPiVcbiAgZ3JvdXBfYnkoc2l0ZSwgbW9udGgsIGNvbmRpdGlvbl9zY29yZV9iaW4pICU+JSBkcGx5ciA6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiVcbiAgdW5ncm91cCgpICU+JVxuICBtdXRhdGUoUHJvcG9ydGlvbiA9IENvdW50L3N1bShDb3VudCkpXG5cbmRmX0JDU19wcm9wb3J0aW9uczwtIG5hLm9taXQoZGZfQkNTX3Byb3BvcnRpb25zKVxuXG5kZl9CQ1NfcHJvcG9ydGlvbnMkbW9udGggPC0gZmFjdG9yKGRmX0JDU19wcm9wb3J0aW9ucyRtb250aCwgbGV2ZWxzID0gYyhcXDVcXCxcXDZcXCxcXDdcXCwgXFw4XFwsIFxcOVxcLCBcXDEwXFwsIFxcMTFcXCksXG4gICAgICAgIGxhYmVscz1jKFxcTWF5XFwsIFxcSnVuZVxcLCBcXEp1bHlcXCwgXFxBdWdcXCwgXFxTZXB0XFwsIFxcT2N0XFwsIFxcTm92XFwpKVxuZGZfQkNTX3Byb3BvcnRpb25zJHNpdGUgPC0gZmFjdG9yKGRmX0JDU19wcm9wb3J0aW9ucyRzaXRlLCBsZXZlbHMgPSBjKFxcQVNIQ1xcLFxcRkVOQ1xcLFxcR09MRFxcLCBcXExBVVJcXCksXG4gICAgICAgIGxhYmVscz1jKFxcQXNoIENyZWVrXFwsIFxcRmVuY2UgQ3JlZWtcXCwgXFxHb2xkIFN0YXJcXCwgXFxMYXVyZWwgSG9sbG93XFwpKVxuXG5iY3MucHJvcC4yMDIzIDwtIGdncGxvdChkYXRhPWRmX0JDU19wcm9wb3J0aW9ucywgYWVzKHg9bW9udGgsIHk9IFByb3BvcnRpb24sIGZpbGw9Y29uZGl0aW9uX3Njb3JlX2JpbikpICtcbiAgZ2VvbV9iYXIod2lkdGggPSAuNSwgc3RhdD1cXGlkZW50aXR5XFwsIHBvc2l0aW9uID0gXFxmaWxsXFwsIGNvbG91ciA9IFxcYmxhY2tcXCkrICBcbiAgIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIFxuICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0PTEsIHNpemUgPSByZWwoLjkpKSkrXG4gIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IueCA9ZWxlbWVudF9ibGFuaygpKStcbiAgbGFicyh0aXRsZT1cXEJvZHkgY29uZGl0aW9uIHNjb3JlcyBpbiAyMDIzXFwsIHggPVxcTW9udGhcXCwgeSA9IFxcUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgXFwpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjIpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjIpLCBhbmdsZSA9IDApKSsgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9IFxcQmx1ZXNcXCkgK1xuICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSkpK1xuICB0aGVtZSAobGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCkpK1xuICB0aGVtZSh0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTcpKStcbiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE3KSkrXG4gIGxhYnMoZmlsbCA9XFxCb2R5IENvbmRpdGlvbiBTY29yZVxcKStcbiAgZmFjZXRfd3JhcCh+IHNpdGUgKVxuYmNzLnByb3AuMjAyM1xuXG4jcGRmKHBhc3RlMChwYXRoID0gXFxMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dFxcICxcXC9CQ1NfcHJvcG9ydGlvbl8yMDIzLnBkZlxcKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMylcbiNwcmludChiY3MucHJvcC4yMDIzKVxuI2Rldi5vZmYoKVxuXG4jQkNTX3Byb3BvcnRpb25fYWxsK3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoXFwjMDAzQzMwXFwsXFwjMDE2NjVFXFwsXFwjODBDREMxXFwsXFwjQzdFQUU1XFwsXFwjRjZFOEMzXFwsXFwjREZDMjdEXFwsXFwjQkY4MTJEXFwsIFxcIzhDNTEwQVxcLFxcIzU0MzAwNVxcICkpXG4jc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYyhcXCMwMDNDMzBcXCxcXCMwMTY2NUVcXCxcXCM4MENEQzFcXCxcXCNDN0VBRTVcXCxcXGF6dXJlMVxcLFxcc2xhdGVncmF5MVxcLFxcc2xhdGVncmF5M1xcLCBcXHNsYXRlZ3JheTRcXCwgXFxncmF5MjVcXCApKSBcblxuZiA8LSBmdW5jdGlvbihwYWwpIGJyZXdlci5wYWwoYnJld2VyLnBhbC5pbmZvW3BhbCwgXFxtYXhjb2xvcnNcXF0sIHBhbClcbihjb2xzIDwtIGYoXFxZbEduQnVcXCkpXG5gYGBcbmBgYCJ9 -->

```r
```r
#Coding graphs for LIS Conference - only 2023 data
data_2023 <- data_all%>%  filter(!year==\2024\)

df_BCS_proportions<- data_2023 %>%
  mutate(condition_score_numeric = as.numeric(condition_score),condition_score_bin = case_when(condition_score == 1 ~ \1\, condition_score == 2 ~\2\,condition_score == 3 ~ \3\, condition_score == 4 ~\4\,condition_score == 5 ~ \5\, condition_score == 6 ~\6\,condition_score == 7 ~ \7\, condition_score == 8 ~\8\, condition_score ==9 ~\9\, TRUE ~ as.character(condition_score))) %>%
  group_by(site, month, condition_score_bin) %>% dplyr ::summarise(Count= n()) %>%
  ungroup() %>%
  mutate(Proportion = Count/sum(Count))

df_BCS_proportions<- na.omit(df_BCS_proportions)

df_BCS_proportions$month <- factor(df_BCS_proportions$month, levels = c(\5\,\6\,\7\, \8\, \9\, \10\, \11\),
        labels=c(\May\, \June\, \July\, \Aug\, \Sept\, \Oct\, \Nov\))
df_BCS_proportions$site <- factor(df_BCS_proportions$site, levels = c(\ASHC\,\FENC\,\GOLD\, \LAUR\),
        labels=c(\Ash Creek\, \Fence Creek\, \Gold Star\, \Laurel Hollow\))

bcs.prop.2023 <- ggplot(data=df_BCS_proportions, aes(x=month, y= Proportion, fill=condition_score_bin)) +
  geom_bar(width = .5, stat=\identity\, position = \fill\, colour = \black\)+  
   theme_bw() +  theme(panel.grid.minor = element_blank())+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1, size = rel(.9)))+
  theme(panel.grid.major.x =element_blank())+
  labs(title=\Body condition scores in 2023\, x =\Month\, y = \Proportion of body condition scores \)+ theme(axis.title.y = element_text(size = rel(1.2), angle =90), axis.title.x = element_text(size = rel(1.2), angle = 0))+ scale_fill_brewer(palette = \Blues\) +
  theme(strip.text = element_text(size = 15))+
  theme (legend.title = element_text(size = 18))+
  theme(title = element_text(size = 17))+
  theme(axis.text=element_text(size=17))+
  labs(fill =\Body Condition Score\)+
  facet_wrap(~ site )
bcs.prop.2023

#pdf(paste0(path = \Lab_Data_TissueProcessing/output\ ,\/BCS_proportion_2023.pdf\), height = 7, width = 13)
#print(bcs.prop.2023)
#dev.off()

#BCS_proportion_all+scale_fill_manual(values = c(\#003C30\,\#01665E\,\#80CDC1\,\#C7EAE5\,\#F6E8C3\,\#DFC27D\,\#BF812D\, \#8C510A\,\#543005\ ))
#scale_fill_manual(values = c(\#003C30\,\#01665E\,\#80CDC1\,\#C7EAE5\,\azure1\,\slategray1\,\slategray3\, \slategray4\, \gray25\ )) 

f <- function(pal) brewer.pal(brewer.pal.info[pal, \maxcolors\], pal)
(cols <- f(\YlGnBu\))
```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJME52WkdsdVp5Qm5jbUZ3YUhNZ1ptOXlJRXhKVXlCRGIyNW1aWEpsYm1ObElDMGdiMjVzZVNBeU1ESXpJR1JoZEdFZ0tHTnZiblJwYm5WbFpDbGNibHh1WkdaZk0xOXdjbTl3UEMwZ2MyVnNaV04wS0dSaGRHRmZNakF5TXl3Z0xXTW9YQ0p6YVhSbFhDSXBLVnh1WEc0alEyOTFiblFnWVc1a0lIQnliM0J2Y25ScGIyNGdkR0ZpYkdVZ1ptOXlJREl3TWpNZ1ltTnpJSE5qYjNKbGN5QmllU0J0YjI1MGFGeHVZbU56WDNSaFlteGxJRHd0SUhSaFlteGxLR1JoZEdGZk1qQXlNeVJqYjI1a2FYUnBiMjVmYzJOdmNtVXNJR1JoZEdGZk1qQXlNeVJ0YjI1MGFDd2daR0YwWVY4eU1ESXpKSE5wZEdVcFhHNXVZVzFsY3loa2FXMXVZVzFsY3loaVkzTmZkR0ZpYkdVcEtTQThMU0JqS0Z3aVFtOWtlU0JEYjI1a2FYUnBiMjRnVTJOdmNtVmNJaXdnWENKTmIyNTBhRndpTENCY0lsTnBkR1ZjSWlsY2JtSmpjMTkwWVdKc1pTQThMU0JoWkdSdFlYSm5hVzV6S0dKamMxOTBZV0pzWlNsY2JtSmpjMTkwWVdKc1pWeHVYRzVnWUdBaWZRPT0gLS0+XG5cbmBgYHJcbiNDb2RpbmcgZ3JhcGhzIGZvciBMSVMgQ29uZmVyZW5jZSAtIG9ubHkgMjAyMyBkYXRhIChjb250aW51ZWQpXG5cbmRmXzNfcHJvcDwtIHNlbGVjdChkYXRhXzIwMjMsIC1jKFxcc2l0ZVxcKSlcblxuI0NvdW50IGFuZCBwcm9wb3J0aW9uIHRhYmxlIGZvciAyMDIzIGJjcyBzY29yZXMgYnkgbW9udGhcbmJjc190YWJsZSA8LSB0YWJsZShkYXRhXzIwMjMkY29uZGl0aW9uX3Njb3JlLCBkYXRhXzIwMjMkbW9udGgsIGRhdGFfMjAyMyRzaXRlKVxubmFtZXMoZGltbmFtZXMoYmNzX3RhYmxlKSkgPC0gYyhcXEJvZHkgQ29uZGl0aW9uIFNjb3JlXFwsIFxcTW9udGhcXCwgXFxTaXRlXFwpXG5iY3NfdGFibGUgPC0gYWRkbWFyZ2lucyhiY3NfdGFibGUpXG5iY3NfdGFibGVcblxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->
#Coding graphs for LIS Conference - only 2023 data (continued)

df_3_prop<- select(data_2023, -c(\site\))

#Count and proportion table for 2023 bcs scores by month
bcs_table <- table(data_2023$condition_score, data_2023$month, data_2023$site)
names(dimnames(bcs_table)) <- c(\Body Condition Score\, \Month\, \Site\)
bcs_table <- addmargins(bcs_table)
bcs_table



<!-- rnb-output-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dUkwTnZaR2x1WnlCbmNtRndhSE1nWm05eUlFeEpVeUJEYjI1bVpYSmxibU5sSUMwZ2IyNXNlU0F5TURJeklHUmhkR0VnS0dOdmJuUnBiblZsWkNsY2JseHVaR1pmTTE5d2NtOXdQQzBnYzJWc1pXTjBLR1JoZEdGZk1qQXlNeXdnTFdNb1hGeHphWFJsWEZ3cEtWeHVYRzRqUTI5MWJuUWdZVzVrSUhCeWIzQnZjblJwYjI0Z2RHRmliR1VnWm05eUlESXdNak1nWW1OeklITmpiM0psY3lCaWVTQnRiMjUwYUZ4dVltTnpYM1JoWW14bElEd3RJSFJoWW14bEtHUmhkR0ZmTWpBeU15UmpiMjVrYVhScGIyNWZjMk52Y21Vc0lHUmhkR0ZmTWpBeU15UnRiMjUwYUN3Z1pHRjBZVjh5TURJekpITnBkR1VwWEc1dVlXMWxjeWhrYVcxdVlXMWxjeWhpWTNOZmRHRmliR1VwS1NBOExTQmpLRnhjUW05a2VTQkRiMjVrYVhScGIyNGdVMk52Y21WY1hDd2dYRnhOYjI1MGFGeGNMQ0JjWEZOcGRHVmNYQ2xjYm1KamMxOTBZV0pzWlNBOExTQmhaR1J0WVhKbmFXNXpLR0pqYzE5MFlXSnNaU2xjYm1KamMxOTBZV0pzWlZ4dVhHNWdZR0JjYm1CZ1lDSjkgLS0+XG5cbmBgYHJcbmBgYHJcbiNDb2RpbmcgZ3JhcGhzIGZvciBMSVMgQ29uZmVyZW5jZSAtIG9ubHkgMjAyMyBkYXRhIChjb250aW51ZWQpXG5cbmRmXzNfcHJvcDwtIHNlbGVjdChkYXRhXzIwMjMsIC1jKFxcc2l0ZVxcKSlcblxuI0NvdW50IGFuZCBwcm9wb3J0aW9uIHRhYmxlIGZvciAyMDIzIGJjcyBzY29yZXMgYnkgbW9udGhcbmJjc190YWJsZSA8LSB0YWJsZShkYXRhXzIwMjMkY29uZGl0aW9uX3Njb3JlLCBkYXRhXzIwMjMkbW9udGgsIGRhdGFfMjAyMyRzaXRlKVxubmFtZXMoZGltbmFtZXMoYmNzX3RhYmxlKSkgPC0gYyhcXEJvZHkgQ29uZGl0aW9uIFNjb3JlXFwsIFxcTW9udGhcXCwgXFxTaXRlXFwpXG5iY3NfdGFibGUgPC0gYWRkbWFyZ2lucyhiY3NfdGFibGUpXG5iY3NfdGFibGVcblxuYGBgXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuI0NvZGluZyBncmFwaHMgZm9yIExJUyBDb25mZXJlbmNlIC0gb25seSAyMDIzIGRhdGEgKGNvbnRpbnVlZClcblxuZGZfM19wcm9wPC0gc2VsZWN0KGRhdGFfMjAyMywgLWMoXFxzaXRlXFwpKVxuXG4jQ291bnQgYW5kIHByb3BvcnRpb24gdGFibGUgZm9yIDIwMjMgYmNzIHNjb3JlcyBieSBtb250aFxuYmNzX3RhYmxlIDwtIHRhYmxlKGRhdGFfMjAyMyRjb25kaXRpb25fc2NvcmUsIGRhdGFfMjAyMyRtb250aCwgZGF0YV8yMDIzJHNpdGUpXG5uYW1lcyhkaW1uYW1lcyhiY3NfdGFibGUpKSA8LSBjKFxcQm9keSBDb25kaXRpb24gU2NvcmVcXCwgXFxNb250aFxcLCBcXFNpdGVcXClcbmJjc190YWJsZSA8LSBhZGRtYXJnaW5zKGJjc190YWJsZSlcbmJjc190YWJsZVxuXG5gYGBcbmBgYCJ9 -->

```r
```r
#Coding graphs for LIS Conference - only 2023 data (continued)

df_3_prop<- select(data_2023, -c(\site\))

#Count and proportion table for 2023 bcs scores by month
bcs_table <- table(data_2023$condition_score, data_2023$month, data_2023$site)
names(dimnames(bcs_table)) <- c(\Body Condition Score\, \Month\, \Site\)
bcs_table <- addmargins(bcs_table)
bcs_table

```
```

<!-- rnb-source-end -->


<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->




<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVjMlZ6YzJsdmJrbHVabThvS1Z4dVlHQmdJbjA9IC0tPlxuXG5gYGByXG5zZXNzaW9uSW5mbygpXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
sessionInfo()

````

```r
sessionInfo()

```

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

LS0tDQp0aXRsZTogIkxJUyBPeXN0ZXIgTGFiIFRpc3N1ZSBQcm9jZXNzaW5nIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQpBdXRob3IgOiBNYXJpYWggS2FjaG1hcg0KZGVzY3JpcHRpb246IFRoaXMgUiBjb2RlIGlzIHVzZWQgdG8gaW1wb3J0IGFuZCBzdW1tYXJpemUgdGlzc3VlIHByb2Nlc3NpbmcgZGF0YSAoYm9keSBjb25kaXRpb24sIGhlaWdodC9sZW5ndGgvd2lkdGgsIHdlaWdodCwgc2FtcGxlIGNvbGxlY3Rpb24pIGZyb20gdGhlIExJU1MgT3lzdGVyIEhlYWx0aCBQcm9qZWN0J3MgbW9udGhseSBzYW1wbGluZyBhdCBBc2ggQ3JlZWsgYW5kIEZlbmNlIENyZWVrIGludGVydGlkYWwgc2l0ZXMgaW4gQ29ubmVjdGljdXQgYW5kIEdvbGRzdGFyIGJlYWNoIGFuZCBMYXVyZWwgSG9sbG93IHN1YnRpZGFsIHNpdGVzIG9uIExvbmcgSXNsYW5kLCBOWS4gDQotLS0NCg0KVXBkYXRlZCA1LzIvMjUgYnkgSy4gTGVuZGVybWFuDQotIGFsbCBjb2RlIHVwIHRvIGRhdGUgJiBncmFwaHMgZ2VuZXJhdGVkDQotIGNvbW1lbnRlZCBvdXQgb3V0cHV0cyBmb3IgMjAyMyAmIDIwMjQgZ3JhcGhzDQogDQoNClRoaXMgaXMgYW4gW1IgTWFya2Rvd25dKGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20pIE5vdGVib29rLiBXaGVuIHlvdSBleGVjdXRlIGNvZGUgd2l0aGluIHRoZSBub3RlYm9vaywgdGhlIHJlc3VsdHMgYXBwZWFyIGJlbmVhdGggdGhlIGNvZGUuIA0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCiNrbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQoja25pdHI6Om9wdHNfa25pdCRzZXQocm9vdC5kaXIgPSAnQzovVXNlcnMvbWFyaWFoLmthY2htYXIvZG9jdW1lbnRzL0dpdGh1Yi9FQUQtQVNFQl9FUEFfTElTU19EaXNlYXNlX1N1cnZlaWxsYW5jZScpICNNYXJpYWgncw0Ka25pdHI6Om9wdHNfa25pdCRzZXQocm9vdC5kaXIgPSAnQzovVXNlcnMva3lyYS5sZW5kZXJtYW4vZG9jdW1lbnRzL0dpdGh1Yi9FQUQtQVNFQl9FUEFfTElTU19EaXNlYXNlX1N1cnZlaWxsYW5jZScpICNLeXJhJ3MNCiNrbml0cjo6b3B0c19rbml0JHNldChyb290LmRpciA9ICdDOi9Vc2Vycy9rZWxseS5yb3Blci9kb2N1bWVudHMvR2l0aHViL0VBRC1BU0VCX0VQQV9MSVNTX0Rpc2Vhc2VfU3VydmVpbGxhbmNlJykgI0tlbGx5J3MNCmBgYA0KDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KCJnZ3Bsb3QyIikNCmxpYnJhcnkoInJlYWR4bCIpDQpsaWJyYXJ5KCJwbHlyIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpsaWJyYXJ5KCJkcGx5ciIpDQpsaWJyYXJ5KCJSbWlzYyIpDQpsaWJyYXJ5KCJyZWFkciIpICANCmxpYnJhcnkoImx1YnJpZGF0ZSIpDQpsaWJyYXJ5KCJwdXJyciIpDQpsaWJyYXJ5KCJyZXNoYXBlMiIpDQpsaWJyYXJ5KCJzdHJpbmdyIikNCmxpYnJhcnkoIlJDb2xvckJyZXdlciIpDQpsaWJyYXJ5KCJ0aWR5ciIpDQpgYGANCg0KDQoNCg0KIyMjIFRoaXMgY29kZSBjaHVuayBtZXJnZXMgYWxsIC5jc3YgZmlsZXMgd2l0aGluIHRoZSBUaXNzdWUgcHJvY2Vzc2luZyBmb2xkZXIgaW50byBvbmUgZGF0YSBmcmFtZSBhbmQgb3V0cHV0cyB0aGUgZnVsbCBkYXRhc2V0IGludG8gYSAuY3N2IG1hc3RlciBmaWxlLiBUaGlzIGFsbG93cyB1cyB0byBkb3dubG9hZCB0aGUgcmF3IGRhdGEgYXMgYSAuY3N2LCBhZGQgaXQgdG8gdGhlIHJlcG9zaXRvcnkgZm9sZGVyLCBhbmQgY3JlYXRlIHRoZSBtYXN0ZXIgZGF0YSBmaWxlIHdpdGhvdXQgY29weWluZyBhbmQgcGFzdGluZyBkYXRhIGluIGV4Y2VsLg0KIyByZWFkaW5nIGluIC5jc3YgZmlsZXMgZnJvbSBsb2NhbCBmb2xkZXINCmBgYHtyfQ0KDQojZGF0YV9hbGwgPC0gbGlzdC5maWxlcyhwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3NpbmcvcmF3X2RhdGEvRmlsZXNfYnlfTW9udGgiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWRlbnRpZnkgYWxsIENTViBmaWxlcw0KIyBwYXR0ZXJuID0gIiouY3N2IiwgZnVsbC5uYW1lcyA9IFRSVUUpICU+JSANCiNsYXBwbHkocmVhZF9jc3YpICU+JSAgICMgU3RvcmUgYWxsIGZpbGVzIGluIGxpc3QNCiMgIGJpbmRfcm93cyAgICAgICAgICAjIENvbWJpbmUgZGF0YSBzZXRzIGludG8gb25lIGRhdGEgc2V0IA0KI2RhdGFfYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFByaW50IGRhdGEgdG8gUlN0dWRpbyBjb25zb2xlDQoNCg0KI2FzLmRhdGEuZnJhbWUoZGF0YV9hbGwpICAjIENvbnZlcnQgdGliYmxlIHRvIGRhdGEuZnJhbWUNCg0KDQojRmlsdGVyaW5nIE5BcyBhbmQgdW5uZWNlc3NhcnkgY29sdW1ucw0KI2RhdGFfYWxsIDwtIGRhdGFfYWxsICU+JSBmaWx0ZXIoIWlzLm5hKGRhdGVfY29sbGVjdGVkKSkNCiNkYXRhX2FsbCA8LSBzZWxlY3QoZGF0YV9hbGwsIC1saWdodF9yZWdpbWUsIC1veXN0ZXJfem9uZSkNCg0KDQojd3JpdGUuY3N2KGRhdGFfYWxsLCAiTWFzdGVyX2ZpbGVzL3Rpc3N1ZV9wcm9jZXNzaW5nX2FsbF9kYXRhLmNzdiIsIHJvdy5uYW1lcz1GQUxTRSkNCg0KDQoNCg0KIyMjIyMgVVNFIFRISVMgQ09ERSBUTyBNRVJHRSBEQVRBIEZJTEVTIC0gc29tZSBvZiB0aGUgZmlsZXMgaGF2ZSBjb2x1bW5zIHRoYXQgYXJlIG5vdCB0aGUgc2FtZSBmb3JtYXQgKGRhdGVzIHNwZWNpZmljYWxseSksIHdoaWNoIHdhcyBjYXVzaW5nIGlzc3VlcyBpbiBtZXJnaW5nLiBUaGlzIGNvZGUgYmVsb3cgc2hvdWxkIHNvbHZlIHRoYXQgcHJvYmxlbS4gSXQgY29udmVydHMgYWxsIGRhdGUgY29sdW1ucyB0byBkYXRlcyBhbmQgbS9kL3kgZm9ybWF0ICMjIyMjDQoNCg0KDQpmaWxlX3BhdGhzIDwtIGxpc3QuZmlsZXMocGF0aCA9ICJMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL3Jhd19kYXRhL0ZpbGVzX2J5X01vbnRoIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiA9ICIqLmNzdiIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KDQoNCmRhdGFfYWxsIDwtIGxhcHBseShmaWxlX3BhdGhzLCBmdW5jdGlvbihmaWxlX3BhdGgpIHsNCiAgcmVhZF9jc3YoZmlsZV9wYXRoKSAlPiUNCiAgICBtdXRhdGUoDQogICAgICBkYXRlX2NvbGxlY3RlZCA9IGFzLkRhdGUoZGF0ZV9jb2xsZWN0ZWQsZm9ybWF0ID0gIiVtLyVkLyVZIiksDQogICAgICBkYXRlX3Byb2Nlc3NlZCA9IGFzLkRhdGUoZGF0ZV9wcm9jZXNzZWQsZm9ybWF0ID0gIiVtLyVkLyVZIiksDQogICAgICBkYXRlX2Rhdmlkc29ucyA9IGFzLkRhdGUoZGF0ZV9kYXZpZHNvbnMsZm9ybWF0ID0gIiVtLyVkLyVZIiksDQogICAgICBkYXRlX2V0b2ggPSBhcy5EYXRlKGRhdGVfZXRvaCxmb3JtYXQgPSAiJW0vJWQvJVkiKQ0KICAgICkNCn0pICU+JQ0KICBiaW5kX3Jvd3MNCmFzLmRhdGEuZnJhbWUoZGF0YV9hbGwpICAjIENvbnZlcnQgdGliYmxlIHRvIGRhdGEuZnJhbWUNCg0KZGF0YV9hbGwgPC0gZGF0YV9hbGwgJT4lIGZpbHRlcighaXMubmEoZGF0ZV9jb2xsZWN0ZWQpKQ0KZGF0YV9hbGwgPC0gc2VsZWN0KGRhdGFfYWxsLCAtbGlnaHRfcmVnaW1lLCAtb3lzdGVyX3pvbmUpDQoNCg0KVmlldyhkYXRhX2FsbCkNCg0Kd3JpdGUuY3N2KGRhdGFfYWxsLCAiTWFzdGVyX2ZpbGVzL3Rpc3N1ZV9wcm9jZXNzaW5nX2FsbF9kYXRhLmNzdiIsIHJvdy5uYW1lcz1GQUxTRSkNCg0KYGBgDQoNCiNBIHdyb25nIHZhbHVlIGNhbGlwZXIgaW5wdXQgd2FzIGlkZW50aWZpZWQgZm9yIHRoZSBoZWlnaHQgb2Ygc2FtcGxlIDA5MjNHT0xEXzIzLiBUaGlzIGNvZGUgaXMgcmVtb3ZpbmcgdGhhdCB2YWx1ZSBmcm9tIHRoZSBkYXRhIHNldCBhcyB3ZSBjYW5ub3QgY29uY2x1ZGUgd2hhdCB0aGlzIG9yaWdpbmFsIHZhbHVlIHdhcy4gVGhlIHZhbHVlIGlzIDguNjIuIFRoaXMgd2lsbCBjYXVzZSB0aGlzIGluZGl2aWR1YWwgdG8gZmFsbCBvdXQgb2YgdGhlIGRhdGFzZXQgd2hlbiBzdGFuZGFyZGl6ZWQgdG8gbGVuZ3RoLiBUaGlzIGNvZGUgZG9lcyBub3QgY29tcGxldGVseSByZW1vdmUgdGhlIGluZGl2aWR1YWwgZnJvbSB0aGUgZGF0YXNldC4NCmBgYHtyfQ0KZGF0YV9hbGwkaGVpZ2h0X21tW2RhdGFfYWxsJGhlaWdodF9tbSA9PSAiMCJdIDwtIE5BDQpgYGANCg0KIyMgYWRkaW5nIGEgbW9udGggJiB5ZWFyIGNvbHVtbiB0byB0aGUgZGF0YQ0KDQpgYGB7cn0NCmRhdGFfYWxsIDwtIGRhdGFfYWxsICU+JSBkcGx5cjo6bXV0YXRlKGRhdGVfY29sbGVjdGVkPSBhcy5EYXRlKGRhdGVfY29sbGVjdGVkKSwgbW9udGggPSBtb250aChkYXRlX2NvbGxlY3RlZCkpDQoNCmRhdGFfYWxsIDwtIGRhdGFfYWxsICU+JSBkcGx5cjo6bXV0YXRlKGRhdGVfY29sbGVjdGVkPSBhcy5EYXRlKGRhdGVfY29sbGVjdGVkKSwgeWVhciA9IHllYXIoZGF0ZV9jb2xsZWN0ZWQpKQ0KDQojY2hhbmdpbmcgbnVtZXJpYyBtb250aCB0byBtb250aCBuYW1lDQpkYXRhX2FsbCRtb250aCA8LSBmYWN0b3IoZGF0YV9hbGwkbW9udGgsIGxldmVscyA9IGMoIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCAiOCIsICI5IiwgIjEwIiwgIjExIiwgIjEyIiksDQogICAgICAgIGxhYmVscz1jKCJKYW4iLCJGZWIiLCAiTWFyY2giLCJBcHJpbCIsIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVnIiwgIlNlcHQiLCAiT2N0IiwgIk5vdiIsICJEZWMiKSkNCg0KZGF0YV9hbGwNCmBgYA0KDQojIFRoaXMgY2h1bmsgb2YgY29kZSBjcmVhdGVzIGEgbnVtZXJpY2FsIHZhbHVlIGluIGEgbmV3IGNvbHVtbiBmb3IgdGhlIGJvZHkgY29uZGl0aW9uIHNjb3Jlcw0KYGBge3J9DQoNCmRhdGFfYWxsPC0gZGF0YV9hbGwgJT4lDQogZHBseXI6Om11dGF0ZShjb25kaXRpb25fc2NvcmUgPSByZWNvZGUoY29uZGl0aW9uLCAiMV92ZXJ5X2dvb2QiID0gMSwgIjJfZ29vZCIgPSAyLCAiM19nb29kX21pbnVzIj0gMywgIjRfZmFpcl9wbHVzIj0gNCwgIjVfZmFpciI9IDUsIjZfZmFpcl9taW51cyI9NiwiN19wb29yX3BsdXMiPTcsICI4X3Bvb3IiPSA4LCAiOV92ZXJ5X3Bvb3IiPSA5KSkNCmhlYWQoZGF0YV9hbGwpDQoNCg0KYGBgDQojVGhpcyBjaHVuayBvZiBjb2RlIGlzIHJlbW92aW5nIDA3MjNMQVVSXzIwIGFuZCAwNzIzTEFVUl8yNiBmcm9tIHRoZSBkYXRhc2hlZXQgYXMgdGhleSBoYXZlIGJlZW4gaWRlbnRpZmllZCBhcyBzcGF0IG9uIHNoZWxsIHRvIGF2b2lkIGJpYXMgaW4gdGhlIGRhdGEuIER1cmluZyB0aGlzIHNhbXBsZSBjb2xsZWN0aW9uIHRoZXJlIHdlcmUgYW5pbWFscyB0aGF0IHdlcmUgc2lnbmlmaWNhbnRseSBzbWFsbGVyIHRoYW4gdGhlIHNpbmdsZSBzZXQgb3lzdGVycy4gVGhlc2UgaW5kaXZpZHVhbHMgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBhbGwgbW9udGhseSBzYW1wbGluZyByZWxhdGVkIGRhdGFzaGVldHMgaW5jbHVkaW5nIGRpc2Vhc2UgYW5hbHlzaXMuIEFsbCB0aXNzdWUgYW1wbGVzIHdpbGwgYmUgZGlzZ2FyZGVkLiANCmBgYHtyfQ0KZGF0YV9hbGwgPC0gZGF0YV9hbGwgJT4lDQogIHN1YnNldChsYWJfaWQgIT0gIjA3MjNMQVVSXzIwIikgJT4lDQogIHN1YnNldChsYWJfaWQgIT0gIjA3MjNMQVVSXzI2IikNCg0KZGF0YV9hbGwNCg0KYGBgDQoNCiMgU3VtbWFyeSBvZiBhbGwgZGF0YSAtIGhlaWdodA0KYGBge3J9DQpzdF9oZWlnaHQgPC0gc3VtbWFyeVNFKGRhdGFfYWxsJT4lIGZpbHRlcighaXMubmEoaGVpZ2h0X21tKSksIG1lYXN1cmV2YXI9ImhlaWdodF9tbSIsIGdyb3VwdmFycz1jKCJzaXRlIiwgImRhdGVfY29sbGVjdGVkIikpDQoNCnN0X2hlaWdodCANCg0KI0NhbGN1bGF0ZSBjb21wbGV0ZW5lc3MgZm9yIFFDDQpzdF9oZWlnaHQkQ29tcGxldGVuZXNzIDwtIHN0X2hlaWdodCROIC8zMA0KDQpzdF9oZWlnaHQNCg0Kd3JpdGUuY3N2KHN0X2hlaWdodCwgIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0XFxDb21wbGV0ZW5lc3NfdGlzc3VlX3Byb2Nlc3NpbmdfZGF0YS5jc3YiLCByb3cubmFtZXM9RkFMU0UpDQpgYGANCiNNZWFuIEhlaWdodA0KYGBge3J9DQpnZ3Bsb3QoZGF0YT1kYXRhX2FsbCwgYWVzKHg9c2l0ZSwgeT1oZWlnaHRfbW0sIGZpbGw9c2l0ZSkpICsNCiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJNZWFuIFNoZWxsIEhlaWdodCAiLCB4ID0ic2l0ZSIsIHkgPSAiTWVhbiBTaGVsbCBIZWlnaHQgKG1tKSIpICsgZmFjZXRfd3JhcCgufnllYXIpDQpgYGANCg0KDQoNCiNCb2R5IGNvbmRpdGlvbg0KYGBge3J9DQoNCmdncGxvdChkYXRhPWRhdGFfYWxsLCBhZXMoeD1zaXRlLCB5PWNvbmRpdGlvbl9zY29yZSwgZmlsbD1zaXRlKSkgKw0KICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9Ik1lYW4gQ29uZGl0aW9uIFNjb3JlICIsIHggPSJzaXRlIiwgeSA9ICJNZWFuIEJvZHkgQ29uZGl0aW9uIFNjb3JlIikrIHNjYWxlX3lfcmV2ZXJzZSgpKyBmYWNldF93cmFwKC5+eWVhcikNCmBgYA0KDQpgYGB7cn0NCg0KbWVhbl9ib2R5X2NvbmRpdGlvbiA8LSBkYXRhX2FsbCAlPiUNCiAgZHBseXI6Omdyb3VwX2J5KHNpdGUsIG1vbnRoLCB5ZWFyKSU+JQ0KICBkcGx5cjo6c3VtbWFyaXplKG1lYW5fYnNjID0gbWVhbihjb25kaXRpb25fc2NvcmUsIG5hLnJtID0gVFJVRSkpDQptZWFuX2JvZHlfY29uZGl0aW9uDQoNCiNmb3Igb3ZlcmxheSBncmFwaA0KI21lYW5fYmNzX2FzaGMgPC0gbWVhbl9ib2R5X2NvbmRpdGlvbiAlPiUNCiAgI2ZpbHRlcihzaXRlID09ICJBU0hDIikgJT4lDQogICNmaWx0ZXIoeWVhciA9PSAiMjAyNCIpDQoNCiNNZWFuIGJvZHkgY29uZHRpb24gc2NvcmVzIC0gMjAyMw0KZGF0YV8yMDIzIDwtIGRhdGFfYWxsJT4lICBmaWx0ZXIoeWVhcj09IjIwMjMiKQ0KICANCmdncGxvdChkYXRhPWRhdGFfMjAyMywgYWVzKHg9bW9udGgsIHk9Y29uZGl0aW9uX3Njb3JlLCBncm91cCA9IG1vbnRoLCBmaWxsID0gc2l0ZSkpICsNCiAgZ2VvbV9ib3hwbG90KCkrIA0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAtMzUsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9Ik1lYW4gQ29uZGl0aW9uIFNjb3JlIC0gMjAyMyIsIHggPSJtb250aCIsIHkgPSAiTWVhbiBCb2R5IENvbmRpdGlvbiBTY29yZSIpKyBzY2FsZV95X3JldmVyc2UoKStmYWNldF93cmFwKH5zaXRlKQ0KDQojTWVhbiBib2R5IGNvbmR0aW9uIHNjb3JlcyAtIDIwMjQNCmRhdGFfMjAyNCA8LSBkYXRhX2FsbCU+JSAgZmlsdGVyKHllYXI9PSIyMDI0IikNCiAgDQpnZ3Bsb3QoZGF0YT1kYXRhXzIwMjQsIGFlcyh4PW1vbnRoLCB5PWNvbmRpdGlvbl9zY29yZSwgZ3JvdXAgPSBtb250aCwgZmlsbCA9IHNpdGUpKSArDQogIGdlb21fYm94cGxvdCgpKyANCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gLTM1LCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJNZWFuIENvbmRpdGlvbiBTY29yZSAtIDIwMjQiLCB4ID0ibW9udGgiLCB5ID0gIk1lYW4gQm9keSBDb25kaXRpb24gU2NvcmUiKSsgc2NhbGVfeV9yZXZlcnNlKCkrZmFjZXRfd3JhcCh+c2l0ZSkNCg0KI01lYW4gYm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyNQ0KZGF0YV8yMDI1IDwtIGRhdGFfYWxsJT4lICBmaWx0ZXIoeWVhcj09IjIwMjUiKQ0KICANCmdncGxvdChkYXRhPWRhdGFfMjAyNSwgYWVzKHg9bW9udGgsIHk9Y29uZGl0aW9uX3Njb3JlLCBncm91cCA9IG1vbnRoLCBmaWxsID0gc2l0ZSkpICsNCiAgZ2VvbV9ib3hwbG90KCkrIA0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAtMzUsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9Ik1lYW4gQ29uZGl0aW9uIFNjb3JlIC0gMjAyNSIsIHggPSJtb250aCIsIHkgPSAiTWVhbiBCb2R5IENvbmRpdGlvbiBTY29yZSIpKyBzY2FsZV95X3JldmVyc2UoKStmYWNldF93cmFwKH5zaXRlKQ0KYGBgDQojUHJvcG9ydGlvbnMgZ3JhcGggQm9keSBjb25kaXRpb24gc2NvcmVzDQoNCmBgYHtyfQ0KI1Byb3BvcnRpb25zIGdyYXBoIEJvZHkgY29uZGl0aW9uIHNjb3JlcyAtIDIwMjMNCg0KZGZfQkNTX3Byb3BvcnRpb25zMjAyMzwtIGRhdGFfMjAyMyAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQoNCiAgZ3JvdXBfYnkoc2l0ZSwgbW9udGgsIHllYXIsIGNvbmRpdGlvbl9zY29yZV9iaW4pICU+JSBkcGx5ciA6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCg0KICB1bmdyb3VwKCkgJT4lDQogIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSkNCg0KZGZfQkNTX3Byb3BvcnRpb25zMjAyMzwtIG5hLm9taXQoZGZfQkNTX3Byb3BvcnRpb25zMjAyMykNCg0KQkNTX3Byb3BvcnRpb25fYWxsXzIwMjM8LSBnZ3Bsb3QoZGF0YT1kZl9CQ1NfcHJvcG9ydGlvbnMyMDIzLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiLCBjb2xvdXIgPSAiYmxhY2siKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyAtIDIwMjMiLCB4ID0ibW9udGgiLCB5ID0gIlByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzICIpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApKSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkrDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQmx1ZXMiLCBkaXJlY3Rpb24gPSAtMSkrDQogIGZhY2V0X3dyYXAofiBzaXRlKQ0KDQpCQ1NfcHJvcG9ydGlvbl9hbGxfMjAyMw0KDQojcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiAsIi9hbGxfQkNTX3Byb3BvcnRpb25fMjAyMy5wZGYiKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMykNCiNwcmludChCQ1NfcHJvcG9ydGlvbl9hbGxfMjAyMykNCiNkZXYub2ZmKCkNCmBgYA0KYGBge3J9DQojUHJvcG9ydGlvbnMgZ3JhcGggQm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyNA0KZGZfQkNTX3Byb3BvcnRpb25zMjAyNDwtIGRhdGFfMjAyNCAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQoNCiAgZ3JvdXBfYnkoc2l0ZSwgbW9udGgsIHllYXIsIGNvbmRpdGlvbl9zY29yZV9iaW4pICU+JSBkcGx5ciA6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCg0KICB1bmdyb3VwKCkgJT4lDQogIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSkNCg0KZGZfQkNTX3Byb3BvcnRpb25zMjAyNDwtIG5hLm9taXQoZGZfQkNTX3Byb3BvcnRpb25zMjAyNCkNCg0KQkNTX3Byb3BvcnRpb25fYWxsXzIwMjQ8LSBnZ3Bsb3QoZGF0YT1kZl9CQ1NfcHJvcG9ydGlvbnMyMDI0LCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiLCBjb2xvdXIgPSAiYmxhY2siKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyAtIDIwMjQiLCB4ID0ibW9udGgiLCB5ID0gIlByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzICIpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApKSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkrDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQmx1ZXMiLCBkaXJlY3Rpb24gPSAtMSkrDQogIGZhY2V0X3dyYXAofiBzaXRlKQ0KDQpCQ1NfcHJvcG9ydGlvbl9hbGxfMjAyNA0KDQojcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiAsIi9hbGxfQkNTX3Byb3BvcnRpb25fMjAyNC5wZGYiKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMykNCiNwcmludChCQ1NfcHJvcG9ydGlvbl9hbGxfMjAyNCkNCiNkZXYub2ZmKCkNCmBgYA0KYGBge3J9DQojUHJvcG9ydGlvbnMgZ3JhcGggQm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyNQ0KZGZfQkNTX3Byb3BvcnRpb25zMjAyNTwtIGRhdGFfMjAyNSAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQoNCiAgZ3JvdXBfYnkoc2l0ZSwgbW9udGgsIHllYXIsIGNvbmRpdGlvbl9zY29yZV9iaW4pICU+JSBkcGx5ciA6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCg0KICB1bmdyb3VwKCkgJT4lDQogIG11dGF0ZShQcm9wb3J0aW9uID0gQ291bnQvc3VtKENvdW50KSkNCg0KZGZfQkNTX3Byb3BvcnRpb25zMjAyNTwtIG5hLm9taXQoZGZfQkNTX3Byb3BvcnRpb25zMjAyNSkNCg0KQkNTX3Byb3BvcnRpb25fYWxsXzIwMjU8LSBnZ3Bsb3QoZGF0YT1kZl9CQ1NfcHJvcG9ydGlvbnMyMDI1LCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiLCBjb2xvdXIgPSAiYmxhY2siKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyAtIDIwMjUiLCB4ID0ibW9udGgiLCB5ID0gIlByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzICIpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApKSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkrDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQmx1ZXMiLCBkaXJlY3Rpb24gPSAtMSkrDQogIGZhY2V0X3dyYXAofiBzaXRlKSMsIHNjYWxlcyA9ICJmcmVlIikNCg0KQkNTX3Byb3BvcnRpb25fYWxsXzIwMjUNCg0KcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiAsIi9hbGxfQkNTX3Byb3BvcnRpb25fMjAyNS5wZGYiKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMykNCnByaW50KEJDU19wcm9wb3J0aW9uX2FsbF8yMDI1KQ0KZGV2Lm9mZigpDQpgYGANCmBgYHtyfQ0KI1dpbnRlciBzYW1wbGluZyANCiMgd2ludGVyX2JjcyA8LSByYmluZChkZl9CQ1NfcHJvcG9ydGlvbnMyMDI0LCBkZl9CQ1NfcHJvcG9ydGlvbnMyMDI1KQ0KIyANCiMgd2ludGVyX2JjcyA8LSB3aW50ZXJfYmNzICU+JSBmaWx0ZXIobW9udGggPT0gIkRlYyJ8bW9udGggPT0gIkphbiJ8bW9udGggPT0gIkZlYiIpDQojIA0KIyBCQ1NfcHJvcG9ydGlvbl93aW50ZXI8LSBnZ3Bsb3QoZGF0YT13aW50ZXJfYmNzLCBhZXMoeD1mYWN0b3IgKG1vbnRoLCBsZXZlbD1jKCdEZWMnLCAnSmFuJywgJ0ZlYicpKSwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KIyAgIGdlb21fYmFyKHdpZHRoID0gLjUsIHN0YXQ9ImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZmlsbCIsIGNvbG91ciA9ICJibGFjayIpKyAgDQojICAgIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIA0KIyAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KIyAgIGxhYnModGl0bGU9IlByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIC0gV2ludGVyIFNhbXBsaW5nIDIwMjQtMjAyNSIsIHggPSJNb250aCIsIHkgPSAiUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgIikrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCkpKw0KIyAgIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpKw0KIyAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQmx1ZXMiLCBkaXJlY3Rpb24gPSAtMSkrDQojICAgZmFjZXRfd3JhcCh+IHNpdGUpDQojIA0KIyBCQ1NfcHJvcG9ydGlvbl93aW50ZXINCmBgYA0KDQpgYGB7cn0NCiMgUHJvcG9ydGlvbiBwZXIgbW9udGggb2YgaW50ZW5zaXR5IHNjb3JlcyBhdCB0aHJlZSBzaXRlcyBkdXJpbmcgMjAyMyAmIDIwMjQgJiAyMDI1DQpkZl9iY3NfcHJvcG9ydGlvbnNfbmV3IDwtIHJiaW5kKGRmX0JDU19wcm9wb3J0aW9uczIwMjMsIGRmX0JDU19wcm9wb3J0aW9uczIwMjQsIGRmX0JDU19wcm9wb3J0aW9uczIwMjUpDQoNCmRmX2Jjc19wcm9wb3J0aW9uc19uZXc8LSBkZl9iY3NfcHJvcG9ydGlvbnNfbmV3ICU+JSBmaWx0ZXIoIXNpdGU9PSJMQVVSIikNCg0KZ2dwbG90KGRhdGE9ZGZfYmNzX3Byb3BvcnRpb25zX25ldywgYWVzKHg9bW9udGgsIHk9IFByb3BvcnRpb24sIGZpbGw9Y29uZGl0aW9uX3Njb3JlX2JpbikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAuNSwgc3RhdD0iaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJmaWxsIixjb2xvdXIgPSAiYmxhY2siKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKGZpbGwgPSJCb2R5IGNvbmRpdGlvbiBzY29yZXMiKSsNCiAgbGFicyh0aXRsZT0iUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMiLCB4ID0ibW9udGgiLCB5ID0gIlByb3BvcnRpb24iKSsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPTkwKSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpKw0Kc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJCbHVlcyIsIGRpcmVjdGlvbiA9IC0xKSsNCiAgICNzY2FsZV94X2NvbnRpbnVvdXMoIk1vbnRoIiwgYnJlYWtzID0gYygzLDQsNSw2LDcsOCw5LDEwKSkrIA0KICBmYWNldF9ncmlkKHllYXIgfnNpdGUpDQpgYGANCg0KDQoNCiNTaGVsbCBQYXRob2xvZ3kgLSBhbGwgZGF0YQ0KI0luY2x1ZGVzIDIwMjMgZGF0YSBhbmQgYWxsIGRhdGEgdGhhdCBpcyBpbiB0aGUgMjAyNCBmb3JtYXQNCmBgYHtyfQ0Kc2hlbGxfcGF0aCA8LSBsaXN0LmZpbGVzKHBhdGggPSAiTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9yYXdfZGF0YS9zaGVsbF9wYXRob2xvZ3kiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWRlbnRpZnkgYWxsIENTViBmaWxlcw0KIHBhdHRlcm4gPSAiKi5jc3YiLCBmdWxsLm5hbWVzID0gVFJVRSkgJT4lIA0KbGFwcGx5KHJlYWRfY3N2KSAlPiUgICAjIFN0b3JlIGFsbCBmaWxlcyBpbiBsaXN0DQogIGJpbmRfcm93cyAgICAgICAgICAjIENvbWJpbmUgZGF0YSBzZXRzIGludG8gb25lIGRhdGEgc2V0IA0KDQpzaGVsbF9wYXRoIDwtIHNoZWxsX3BhdGggJT4lIGZpbHRlcighaXMubmEobGFiX2lkKSkNCg0Kc2hlbGxfcGF0aCA8LSBzaGVsbF9wYXRoICU+JSBzZWxlY3QoLWMoIi4uLjE0IjoiLi4uMjYiKSkNCg0Kd3JpdGUuY3N2KHNoZWxsX3BhdGgsICJNYXN0ZXJfZmlsZXMvc2hlbGxfcGF0aG9sb2d5X2FsbF9kYXRhLmNzdiIsIHJvdy5uYW1lcz1GQUxTRSkNCg0KDQojV3JpdGluZyBzdW1tYXJ5IGZvciBzaGVsbCBwYXRob2xvZ3kNCnNoZWxsX3BhdGhfc3VtbWFyeSA8LSBzaGVsbF9wYXRoJT4lIHNlcGFyYXRlKGxhYl9pZCwgYygnRGF0ZV9TaXRlJywgJ0lEJykpDQpzaGVsbF9wYXRoX3N1bW1hcnkgPC0gc2VsZWN0KHNoZWxsX3BhdGhfc3VtbWFyeSwgLWMoInBhdGhvbG9neV9ub3RlcyIsIklEIiwpKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JGJvcmluZ19zcG9uZ2UgPC0gYXMuaW50ZWdlcihhcy5sb2dpY2FsKHNoZWxsX3BhdGhfc3VtbWFyeSRib3Jpbmdfc3BvbmdlKSkNCnNoZWxsX3BhdGhfc3VtbWFyeSRwb2x5ZG9yYSA8LSBhcy5pbnRlZ2VyKGFzLmxvZ2ljYWwoc2hlbGxfcGF0aF9zdW1tYXJ5JHBvbHlkb3JhKSkNCnNoZWxsX3BhdGhfc3VtbWFyeSRjb25jaGlvbGluX21vZF9zZXZlcmUgPC0gYXMuaW50ZWdlcihhcy5sb2dpY2FsKHNoZWxsX3BhdGhfc3VtbWFyeSRjb25jaGlvbGluX21vZF9zZXZlcmUpKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JG11ZF9ibGlzdGVyIDwtIGFzLmludGVnZXIoYXMubG9naWNhbChzaGVsbF9wYXRoX3N1bW1hcnkkbXVkX2JsaXN0ZXIpKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JHBlYV9jcmFiIDwtIGFzLmludGVnZXIoYXMubG9naWNhbChzaGVsbF9wYXRoX3N1bW1hcnkkcGVhX2NyYWIpKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JGdpbGxfZXJvc2lvbiA8LSBhcy5pbnRlZ2VyKGFzLmxvZ2ljYWwoc2hlbGxfcGF0aF9zdW1tYXJ5JGdpbGxfZXJvc2lvbikpDQpzaGVsbF9wYXRoX3N1bW1hcnkkcGFsZV9kaWdlc3RpdmUgPC0gYXMuaW50ZWdlcihhcy5sb2dpY2FsKHNoZWxsX3BhdGhfc3VtbWFyeSRwYWxlX2RpZ2VzdGl2ZSkpDQpzaGVsbF9wYXRoX3N1bW1hcnkkZGlzY29sb3JhdGlvbiA8LSBhcy5pbnRlZ2VyKGFzLmxvZ2ljYWwoc2hlbGxfcGF0aF9zdW1tYXJ5JGRpc2NvbG9yYXRpb24pKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JGhvcm5fYWRkIDwtIGFzLmludGVnZXIoYXMubG9naWNhbChzaGVsbF9wYXRoX3N1bW1hcnkkaG9ybl9hZGQpKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JGN5c3RfYWJzY2VzcyA8LSBhcy5pbnRlZ2VyKGFzLmxvZ2ljYWwoc2hlbGxfcGF0aF9zdW1tYXJ5JGN5c3RfYWJzY2VzcykpDQpzaGVsbF9wYXRoX3N1bW1hcnkkdHVtb3IgPC0gYXMuaW50ZWdlcihhcy5sb2dpY2FsKHNoZWxsX3BhdGhfc3VtbWFyeSR0dW1vcikpDQpzaGVsbF9wYXRoX3N1bW1hcnkkb3lzdGVyX2RyaWxsIDwtIGFzLmludGVnZXIoYXMubG9naWNhbChzaGVsbF9wYXRoX3N1bW1hcnkkb3lzdGVyX2RyaWxsKSkNCnNoZWxsX3BhdGhfc3VtbWFyeSRib3Jpbmdfc25haWwgPC0gYXMuaW50ZWdlcihhcy5sb2dpY2FsKHNoZWxsX3BhdGhfc3VtbWFyeSRib3Jpbmdfc25haWwpKQ0Kc2hlbGxfcGF0aF9zdW1tYXJ5JHNoZWxsX3NjYXJyaW5nIDwtIGFzLmludGVnZXIoYXMubG9naWNhbChzaGVsbF9wYXRoX3N1bW1hcnkkc2hlbGxfc2NhcnJpbmcpKQ0Kc2hlbGxfcGF0aF9jb3VudDwtIHNoZWxsX3BhdGhfc3VtbWFyeSAlPiUNCiAgZHBseXI6Omdyb3VwX2J5KERhdGVfU2l0ZSkgJT4lDQogIGRwbHlyOjpzdW1tYXJpemUoU2FtcGxlX2NvdW50ID0gbigpLA0KICAgICAgICAgICAgICBCb3Jpbmdfc3BvbmdlID1zdW0oYm9yaW5nX3Nwb25nZSksDQogICAgICAgICAgICAgIFBvbHlkb3JhID0gc3VtKHBvbHlkb3JhKSwNCiAgICAgICAgICAgICAgQ29uY2hpb2xpbiA9c3VtKGNvbmNoaW9saW5fbW9kX3NldmVyZSksDQogICAgICAgICAgICAgIE11ZF9ibGlzdGVyID1zdW0obXVkX2JsaXN0ZXIpLA0KICAgICAgICAgICAgICBQZWFfY3JhYiA9c3VtKHBlYV9jcmFiKSwNCiAgICAgICAgICAgICAgR2lsbF9lcm9zaW9uID1zdW0oZ2lsbF9lcm9zaW9uKSwNCiAgICAgICAgICAgICAgUGFsZV9kaWdlc3RpdmUgPXN1bShwYWxlX2RpZ2VzdGl2ZSksDQogICAgICAgICAgICAgIERpc2NvbG9yYXRpb24gPXN1bShkaXNjb2xvcmF0aW9uKSwNCiAgICAgICAgICAgICAgSG9ybiA9c3VtKGhvcm5fYWRkKSwNCiAgICAgICAgICAgICAgQ3lzdCA9c3VtKGN5c3RfYWJzY2VzcyksDQogICAgICAgICAgICAgIFR1bW9yID1zdW0odHVtb3IpLA0KICAgICAgICAgICAgICBPeXN0ZXJfZHJpbGwgPXN1bShveXN0ZXJfZHJpbGwpLA0KICAgICAgICAgICAgICBCb3Jpbmdfc25haWwgPXN1bShib3Jpbmdfc25haWwpLA0KICAgICAgICAgICAgICBTaGVsbF9zY2FycmluZyA9c3VtKHNoZWxsX3NjYXJyaW5nKSwNCiAgICAgICAgICAgICAgUGF0aG9nZW5fY291bnQgPSBzdW0oYm9yaW5nX3Nwb25nZSxwb2x5ZG9yYSxjb25jaGlvbGluX21vZF9zZXZlcmUsIG11ZF9ibGlzdGVyLCBwZWFfY3JhYiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbGxfZXJvc2lvbiwgcGFsZV9kaWdlc3RpdmUsIGRpc2NvbG9yYXRpb24sIGhvcm5fYWRkLCBjeXN0X2Fic2Nlc3MsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dW1vciwgb3lzdGVyX2RyaWxsLCBib3Jpbmdfc25haWwsIHNoZWxsX3NjYXJyaW5nLCBuYS5ybSA9IFRSVUUpKSAlPiUNCiAgdW5ncm91cCgpDQp3cml0ZS5jc3Yoc2hlbGxfcGF0aF9jb3VudCwgIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0L3NoZWxsX3BhdGhvbG9neV9jb3VudHMuY3N2Iiwgcm93Lm5hbWVzPUZBTFNFKQ0KDQpzaGVsbF9wYXRoX3N1bW1hcnkNCmBgYA0KDQoNCiMgQXNoIENyZWVrIFN1bW1hcnkNCmBgYHtyfQ0KDQpkZl9BU0hDPC0gZGF0YV9hbGwlPiUNCiAgZmlsdGVyKHNpdGU9PSJBU0hDIikNCmRmX0FTSEMNCg0KIyMgU2hlbGwgSGVpZ2h0ICMjDQpzdF9oZWlnaHRfQVNIQyA8LSBzdW1tYXJ5U0UoZGZfQVNIQywgbWVhc3VyZXZhcj0iaGVpZ2h0X21tIiwgZ3JvdXB2YXJzPWMoImRhdGVfY29sbGVjdGVkIikpDQpzdF9oZWlnaHRfQVNIQw0KDQojIyBCb2R5IENvbmRpdGlvbiAjIw0KI0V4Y2x1ZGVzIEFwcmlsIGFuZCBNYXkgZHVlIHRvIHNjb3JpbmcgY2hhbmdlLiBUaGVzZSBtb250aHMgYXJlIHNjb3JlZCBjYXRlZ29yaWNhbGx5ICdmYXQsIG1lZGl1bSwgd2F0ZXJ5Jy4gDQoNCnN0X2NvbmRpdGlvbl9BU0hDPC0gc3VtbWFyeVNFKGRmX0FTSEMsIG1lYXN1cmV2YXIgPSAiY29uZGl0aW9uX3Njb3JlIiwgZ3JvdXB2YXJzID0gYygiZGF0ZV9jb2xsZWN0ZWQiKSkNCnN0X2NvbmRpdGlvbl9BU0hDDQoNCm1lYW5fY29uZGl0aW9uX0FTSEMgPC0gc3RfY29uZGl0aW9uX0FTSEMgJT4lDQogIGZpbHRlcighaXMubmEoY29uZGl0aW9uX3Njb3JlKSkgJT4lICAjIEZpbHRlciBvdXQgcm93cyB3aGVyZSBjb25kaXRpb25fc2NvcmUgaXMgTkENCiAgc3VtbWFyaXplKG1lYW5fYmNzID0gbWVhbihjb25kaXRpb25fc2NvcmUsIG5hLnJtID0gVFJVRSkpDQptZWFuX2NvbmRpdGlvbl9BU0hDDQoNCmBgYA0KDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGE9ZGZfQVNIQywgYWVzKHg9bW9udGgsIHk9aGVpZ2h0X21tLCBncm91cD0gbW9udGgpKSArDQogIGdlb21fYm94cGxvdCgpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJmb3Jlc3RncmVlbiIsIm9yYW5nZSIsICJwdXJwbGUiKSkrDQogIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIA0KICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKSsNCiAgbGFicyh0aXRsZT0iIEFzaCBDcmVlayBNZWFuIFNoZWxsIEhlaWdodCAiLCB4ID0ibW9udGgiLCB5ID0gIk1lYW4gU2hlbGwgSGVpZ2h0IChtbSkiKStmYWNldF93cmFwKC5+eWVhcikNCmBgYA0KDQpgYGB7cn0NCiNDb25kaXRpb24gZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgc2FtcGxlIG1vbnRocyAtIDIwMjMNCmRmX0FTSENfMjAyMyA8LSBkZl9BU0hDJT4lICBmaWx0ZXIoIXllYXI9PSIyMDI0IikNCg0KQVNIQ19CQ1NfZGlzdDIwMjMgPC1nZ3Bsb3QoZGF0YT1kZl9BU0hDXzIwMjMsIGFlcyh4PSBjb25kaXRpb24pKSArDQogIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJBc2ggQ3JlZWsgQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDIzIiwgeCA9IkNvbmRpdGlvbiBjYXRlZ29yaXphdGlvbiIpKw0KICBmYWNldF93cmFwKH4gbW9udGgsIHNjYWxlcyA9ICJmcmVlIikNCkFTSENfQkNTX2Rpc3QyMDIzDQoNCiNwZGYocGFzdGUwKHBhdGggPSAiTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXQiICwiL0FTSENfQkNTX2Rpc3RfMjAyMy5wZGYiKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMykNCiNwcmludChBU0hDX0JDU19kaXN0MjAyMykNCiNkZXYub2ZmKCkNCg0KI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyNA0KZGZfQVNIQ18yMDI0IDwtIGRmX0FTSEMlPiUgIGZpbHRlcigheWVhcj09IjIwMjMiKQ0KDQpBU0hDX0JDU19kaXN0MjAyNCA8LWdncGxvdChkYXRhPWRmX0FTSENfMjAyNCwgYWVzKHg9IGNvbmRpdGlvbikpICsNCiAgZ2VvbV9iYXIoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9IkFzaCBDcmVlayBCb2R5IENvbmRpdGlvbiBTY29yZSAtIDIwMjQiLCB4ID0iQ29uZGl0aW9uIGNhdGVnb3JpemF0aW9uIikrDQogIGZhY2V0X3dyYXAofiBtb250aCwgc2NhbGVzID0gImZyZWUiKQ0KQVNIQ19CQ1NfZGlzdDIwMjQNCg0KI3BkZihwYXN0ZTAocGF0aCA9ICJMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dCIgLCIvQVNIQ19CQ1NfZGlzdF8yMDI0LnBkZiIpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKQ0KI3ByaW50KEFTSENfQkNTX2Rpc3QyMDI0KQ0KI2Rldi5vZmYoKQ0KDQojQ29uZGl0aW9uIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIHNhbXBsZSBtb250aHMgLSAyMDI1DQpkZl9BU0hDXzIwMjUgPC0gZGZfQVNIQyU+JSAgZmlsdGVyKHllYXI9PSIyMDI1IikNCg0KQVNIQ19CQ1NfZGlzdDIwMjUgPC1nZ3Bsb3QoZGF0YT1kZl9BU0hDXzIwMjUsIGFlcyh4PSBjb25kaXRpb24pKSArDQogIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJBc2ggQ3JlZWsgQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDI1IiwgeCA9IkNvbmRpdGlvbiBjYXRlZ29yaXphdGlvbiIpKw0KICBmYWNldF93cmFwKH4gbW9udGgsIHNjYWxlcyA9ICJmcmVlIikNCkFTSENfQkNTX2Rpc3QyMDI1DQoNCnBkZihwYXN0ZTAocGF0aCA9ICJMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dCIgLCIvQVNIQ19CQ1NfZGlzdF8yMDI1LnBkZiIpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKQ0KcHJpbnQoQVNIQ19CQ1NfZGlzdDIwMjUpDQpkZXYub2ZmKCkNCmBgYA0KDQoNCmBgYHtyfQ0KI01lYW4gQm9keSBjb25kaXRpb24gcGVyIG1vbnRoDQpnZ3Bsb3QoZGF0YT1kZl9BU0hDLCBhZXMoeD0gbW9udGgsIHk9IGNvbmRpdGlvbl9zY29yZSwgZ3JvdXAgPSBtb250aCkpICsNCiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJBc2ggQ3JlZWsgTWVhbiBCb2R5IENvbmRpdGlvbiBTY29yZSAiLCB4ID0ibW9udGgiLCB5PSAiIGNvbmRpdGlvbiBzY29yZSAoMS05KSIpICsgc2NhbGVfeV9yZXZlcnNlKCkrZmFjZXRfd3JhcCgufnllYXIpDQoNCmBgYA0KDQojQVNIQyBQcm9wb3J0aW9ucyBncmFwaCBCb2R5IGNvbmRpdGlvbiBzY29yZXMgLSBhbGwgeWVhcnMNCg0KYGBge3J9DQoNCkFTSENfQkNTX3Byb3BvcnRpb25zPC0gZGZfQVNIQyAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQogIGdyb3VwX2J5KHNpdGUsIG1vbnRoLCBjb25kaXRpb25fc2NvcmVfYmluLCB5ZWFyKSAlPiUgZHBseXI6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCiAgdW5ncm91cCgpICU+JQ0KICBtdXRhdGUoUHJvcG9ydGlvbiA9IENvdW50L3N1bShDb3VudCkpDQoNCkFTSENfQkNTX3Byb3BvcnRpb25zPC0gbmEub21pdChBU0hDX0JDU19wcm9wb3J0aW9ucykNCg0KQVNIQ19CQ1NfcHJvcG9ydGlvbnMNCg0KQkNTX3Byb3BvcnRpb25fQVNIQzwtIGdncGxvdChkYXRhPUFTSENfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJBc2ggQ3JlZWsgUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgSnVuZS0gTm92ZW1iZXIiLCB4ID0ibW9udGgiLCB5ID0gIlByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzICIpKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9OTApLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApKSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkrDQogIGZhY2V0X3dyYXAofiB5ZWFyKQ0KICNzY2FsZV9maWxsX2JyZXdlcigpICsNCiAgI2ZhY2V0X3dyYXAofiBzaXRlKQ0KDQpCQ1NfcHJvcG9ydGlvbl9BU0hDDQogIA0KcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiAsIi9BU0hDX0JDU19wcm9wb3J0aW9uLnBkZiIpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKQ0KcHJpbnQoQkNTX3Byb3BvcnRpb25fQVNIQykNCmRldi5vZmYoKQ0KYGBgDQoNCiMgJSBvZiBzY29yZXMgPjMgYXQgYXNoIGNyZWVrIC0gYWxsIHllYXJzDQpgYGB7cn0NCmRmX0FTSEMNCg0KQVNIQ19wcmVjZW50X2dyZWF0ZXJfMyA8LSBkZl9BU0hDICU+JQ0KICBkcGx5cjo6Z3JvdXBfYnkobW9udGgsIHNpdGUsIHllYXIpICU+JQ0KICBkcGx5cjo6c3VtbWFyaXNlKFBlcmNlbnRhZ2UgPSBtZWFuKGNvbmRpdGlvbl9zY29yZSA8PSAzKSoxMDApDQpBU0hDX3ByZWNlbnRfZ3JlYXRlcl8zDQoNCkFTSENfQkNTX3BlcmNlbnRhZ2UgPC0gQVNIQ19wcmVjZW50X2dyZWF0ZXJfMyU+JSANCiAgI2ZpbHRlcih5ZWFyID09IjIwMjQiKSU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBtb250aCwgeSA9IFBlcmNlbnRhZ2UpKSArDQogICNnZW9tX2Jhcih3aWR0aCA9IDAuNSwgc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiKSArDQogICAgZ2VvbV9jb2woKSsNCiAgdGhlbWVfYncoKSArDQogIHRoZW1lKA0KICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0ID0gMSksDQogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSA5MCksDQogICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSwNCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKQ0KICApICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJBc2ggQ3JlZWsgJSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gMyIsDQogICAgeCA9ICJtb250aCIsDQogICAgeSA9ICJQZXJjZW50YWdlIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyA+PSAzIg0KICApICsNCiAgICBmYWNldF93cmFwKH55ZWFyKQ0KICAjc2NhbGVfeF9jb250aW51b3VzKCBicmVha3MgPSBzZXEoNSwxMiwgYnkgPTEpICkrDQogICN5bGltKDAsNjApKyANCiAgI3NjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTAwKSwgYnJlYWtzID0gc2VxKDAsMTAwLCBieSA9IDEwKSkNCkFTSENfQkNTX3BlcmNlbnRhZ2UNCg0KcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiwgIi9BU0hDX0JDU19wZXJjZW50YWdlLnBkZiIpLGhlaWdodCA9IDcsIHdpZHRoID0gMTMpDQpwcmludChBU0hDX0JDU19wZXJjZW50YWdlKQ0KZGV2Lm9mZigpIA0KDQoNCg0KYGBgDQoNCg0KDQoNCiMgRmVuY2UgQ3JlZWsgU3VtbWFyeQ0KYGBge3J9DQpkZl9GRU5DPC0gZGF0YV9hbGwlPiUNCiAgZmlsdGVyKHNpdGU9PSJGRU5DIikNCmRmX0ZFTkMNCg0KIyMgU2hlbGwgSGVpZ2h0ICMjDQpzdF9oZWlnaHRfRkVOQyA8LSBzdW1tYXJ5U0UoZGZfRkVOQywgbWVhc3VyZXZhcj0iaGVpZ2h0X21tIiwgZ3JvdXB2YXJzPWMoImRhdGVfY29sbGVjdGVkIikpDQpzdF9oZWlnaHRfRkVOQyANCg0KIyMgQm9keSBDb25kaXRpb24gIyMNCiNFeGNsdWRlcyBBcHJpbCBhbmQgTWF5IGR1ZSB0byBzY29yaW5nIGNoYW5nZS4gVGhlc2UgbW9udGhzIGFyZSBzY29yZWQgY2F0ZWdvcmljYWxseSAnZmF0LCBtZWRpdW0sIHdhdGVyeScuIA0KDQpzdF9jb25kaXRpb25fRkVOQzwtIHN1bW1hcnlTRShkZl9GRU5DJT4lIGZpbHRlcighaXMubmEoY29uZGl0aW9uX3Njb3JlKSksIG1lYXN1cmV2YXIgPSAiY29uZGl0aW9uX3Njb3JlIiwgZ3JvdXB2YXJzID0gYygiZGF0ZV9jb2xsZWN0ZWQiKSkNCnN0X2NvbmRpdGlvbl9GRU5DDQoNCmBgYA0KDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGE9ZGZfRkVOQywgYWVzKHg9bW9udGgsIHk9aGVpZ2h0X21tLCBncm91cD1tb250aCkpICsNCiAgZ2VvbV9ib3hwbG90KCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSIgRmVuY2UgQ3JlZWsgTWVhbiBTaGVsbCBIZWlnaHQgIiwgeCA9Im1vbnRoIiwgeSA9ICJNZWFuIFNoZWxsIEhlaWdodCAobW0pIikrIGZhY2V0X3dyYXAoLn55ZWFyKQ0KDQpgYGANCg0KYGBge3J9DQojQ29uZGl0aW9uIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIHNhbXBsZSBtb250aHMgLSAyMDIzDQpkZl9GRU5DLjIwMjMgPC0gZGZfRkVOQyU+JSAgZmlsdGVyKCF5ZWFyPT0iMjAyNCIpDQoNCmdncGxvdChkYXRhPWRmX0ZFTkMuMjAyMywgYWVzKHg9IGNvbmRpdGlvbikpICsNCiAgZ2VvbV9iYXIoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9IkZlbmNlIENyZWVrIEJvZHkgQ29uZGl0aW9uIGluZGV4IC0gMjAyMyIsIHggPSJDb25kaXRpb24gY2F0ZWdvcml6YXRpb24iKSsNCiAgICBmYWNldF93cmFwKH4gbW9udGgsIHNjYWxlcyA9ICJmcmVlIikNCg0KI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyNA0KZGZfRkVOQy4yMDI0IDwtIGRmX0ZFTkMlPiUgIGZpbHRlcigheWVhcj09IjIwMjMiKQ0KDQpnZ3Bsb3QoZGF0YT1kZl9GRU5DLjIwMjQsIGFlcyh4PSBjb25kaXRpb24pKSArDQogIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJGZW5jZSBDcmVlayBCb2R5IENvbmRpdGlvbiBpbmRleCAtIDIwMjQiLCB4ID0iQ29uZGl0aW9uIGNhdGVnb3JpemF0aW9uIikrDQogICAgZmFjZXRfd3JhcCh+IG1vbnRoLCBzY2FsZXMgPSAiZnJlZSIpDQoNCiNNZWFuIEJvZHkgY29uZGl0aW9uIHBlciBtb250aA0KZ2dwbG90KGRhdGE9ZGZfRkVOQywgYWVzKHg9IG1vbnRoLCB5PSBjb25kaXRpb25fc2NvcmUsIGdyb3VwID0gbW9udGgpKSArDQogIGdlb21fYm94cGxvdCgpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJmb3Jlc3RncmVlbiIsIm9yYW5nZSIsICJwdXJwbGUiKSkrDQogIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIA0KICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKSsNCiAgbGFicyh0aXRsZT0iRmVuY2UgQ3JlZWsgTWVhbiBCb2R5IENvbmRpdGlvbiBTY29yZSIsIHggPSJtb250aCIsIHk9ICIgY29uZGl0aW9uIHNjb3JlICgxLTkpIikrIHNjYWxlX3lfcmV2ZXJzZSgpICsgZmFjZXRfd3JhcCh+IHllYXIsIHNjYWxlcyA9ICJmcmVlIikNCg0KYGBgDQojRkVOQyBQcm9wb3J0aW9ucyBncmFwaCBCb2R5IGNvbmRpdGlvbiBzY29yZXMgLSBhbGwgeWVhcnMNCg0KYGBge3J9DQoNCkZFTkNfQkNTX3Byb3BvcnRpb25zPC0gZGZfRkVOQyAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQogIGdyb3VwX2J5KHNpdGUsIG1vbnRoLCBjb25kaXRpb25fc2NvcmVfYmluLCB5ZWFyKSAlPiUgZHBseXI6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCiAgdW5ncm91cCgpICU+JQ0KICBtdXRhdGUoUHJvcG9ydGlvbiA9IENvdW50L3N1bShDb3VudCkpDQoNCkZFTkNfQkNTX3Byb3BvcnRpb25zPC0gbmEub21pdChGRU5DX0JDU19wcm9wb3J0aW9ucykNCg0KRkVOQ19CQ1NfcHJvcG9ydGlvbnMNCg0KQkNTX3Byb3BvcnRpb25fRkVOQzwtIGdncGxvdChkYXRhPUZFTkNfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJGZW5jZSBDcmVlayBQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyIsIHggPSJtb250aCIsIHkgPSAiUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgIikrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCkpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSsNCiAgZmFjZXRfd3JhcCh+IHllYXIpDQogI3NjYWxlX2ZpbGxfYnJld2VyKCkgKw0KICAjZmFjZXRfd3JhcCh+IHNpdGUpDQoNCkJDU19wcm9wb3J0aW9uX0ZFTkMNCiAgDQpwZGYocGFzdGUwKHBhdGggPSAiTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXQiICwiL0ZFTkNfQkNTX3Byb3BvcnRpb24ucGRmIiksIGhlaWdodCA9IDcsIHdpZHRoID0gMTMpDQpwcmludChCQ1NfcHJvcG9ydGlvbl9GRU5DKQ0KZGV2Lm9mZigpDQpgYGANCiMgJSBvZiBzY29yZXMgPjMgYXQgRmVuY2UgQ3JlZWsgLSBhbGwgeWVhcnMNCmBgYHtyfQ0KI3JlbW92aW5nIDA4MjNGRU5DXzI4IGJjcyB3YXMgTkENCmRmX0ZFTkMgPC0gZGZfRkVOQyAlPiUgZHJvcF9uYShjb25kaXRpb24pDQoNCkZFTkNfcHJlY2VudF9ncmVhdGVyXzMgPC0gZGZfRkVOQyAlPiUNCiAgZHBseXI6Omdyb3VwX2J5KG1vbnRoLCB5ZWFyKSAlPiUNCiAgZHBseXI6OnN1bW1hcmlzZShQZXJjZW50YWdlID0gbWVhbihjb25kaXRpb25fc2NvcmUgPD0gMykqMTAwKQ0KRkVOQ19wcmVjZW50X2dyZWF0ZXJfMw0KDQpGRU5DX0JDU19wZXJjZW50YWdlIDwtIGdncGxvdChGRU5DX3ByZWNlbnRfZ3JlYXRlcl8zLGFlcyh4ID0gbW9udGgsIHkgPSBQZXJjZW50YWdlKSkgKw0KICAjZ2VvbV9iYXIod2lkdGggPSAwLjUsIHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJmaWxsIikgKw0KICAgIGdlb21fY29sKCkrDQogIHRoZW1lX2J3KCkgKw0KICB0aGVtZSgNCiAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLA0KICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAxLCBoanVzdCA9IDEpLA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gOTApLA0KICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCksDQogICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMikNCiAgKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiRmVuY2UgQ3JlZWsgJSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gMyIsDQogICAgeCA9ICJtb250aCIsDQogICAgeSA9ICJQZXJjZW50YWdlIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyA+PSAzIg0KICApICsNCiAgICBmYWNldF93cmFwKH55ZWFyKQ0KICAjc2NhbGVfeF9jb250aW51b3VzKCBicmVha3MgPSBzZXEoNSwxMiwgYnkgPTEpICkrDQogICN5bGltKDAsNjApKyANCiAgI3NjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTAwKSwgYnJlYWtzID0gc2VxKDAsMTAwLCBieSA9IDEwKSkNCkZFTkNfQkNTX3BlcmNlbnRhZ2UNCg0KcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiwgIi9GRU5DX0JDU19wZXJjZW50YWdlLnBkZiIpLGhlaWdodCA9IDcsIHdpZHRoID0gMTMpDQpwcmludChGRU5DX0JDU19wZXJjZW50YWdlKQ0KZGV2Lm9mZigpIA0KDQoNCg0KYGBgDQoNCg0KIyBHb2xkIFN0YXIgQmVhY2ggU3VtbWFyeQ0KIyAwNTI0R09MRCBoYXMgNDYgc2FtcGxlcyAtIHdlIGF0dGVtcHRlZCB0byBzYW1wbGUgZnJvbSAyMDIyIGFuZCAyMDIzIHBsYW50aW5nIGFuZCBjb25zaWRlciB0aGVtIHNlcGVyYXRlIGJ1dCBpdCBhcHBlYXJlZCB0aGF0IGR1ZSB0byBhIHN0b3JtIHRoZSBwbGFudGluZ3MgbWl4ZWQgdG9nZXRoZXIuIA0KDQpgYGB7cn0NCmRmX0dPTEQ8LSBkYXRhX2FsbCU+JQ0KICBmaWx0ZXIoc2l0ZT09IkdPTEQiKQ0KZGZfR09MRCA8LSBkZl9HT0xEICU+JSBmaWx0ZXIoIWlzLm5hKGhlaWdodF9tbSkpDQoNCiMyMDIzIGRhdGENCmRmX0dPTEQyMDIzIDwtIGRmX0dPTEQlPiUgIGZpbHRlcigheWVhcj09IjIwMjQiKQ0KDQojMjAyNCBkYXRhDQpkZl9HT0xEMjAyNCA8LSBkZl9HT0xEJT4lICBmaWx0ZXIoIXllYXI9PSIyMDIzIikNCg0KZGZfR09MRCRoZWlnaHRfbW08LWFzLm51bWVyaWMoZGZfR09MRCRoZWlnaHRfbW0pDQoNCm1lYW5fc2hlbGxfaGVpZ2h0IDwtIGRmX0dPTEQgJT4lIG11dGF0ZSh5ZWFyID0geWVhcihkYXRlX2NvbGxlY3RlZCkpICU+JSBncm91cF9ieSh5ZWFyKSU+JSBkcGx5cjo6c3VtbWFyaXNlKG1lYW5faGVpZ2h0ID0gbWVhbihoZWlnaHRfbW0pKSAjc3VtbWFyeVNFKG1lYXN1cmV2YXI9ImhlaWdodF9tbSIsIGdyb3VwdmFycz1jKCJ5ZWFyIikpDQptZWFuX3NoZWxsX2hlaWdodA0KDQojIyBTaGVsbCBIZWlnaHQgIyMNCnN0X2hlaWdodF9HT0xEIDwtIHN1bW1hcnlTRShkZl9HT0xELCBtZWFzdXJldmFyPSJoZWlnaHRfbW0iLCBncm91cHZhcnM9YygiZGF0ZV9jb2xsZWN0ZWQiKSkNCnN0X2hlaWdodF9HT0xEIA0KDQojIyBCb2R5IENvbmRpdGlvbiAjIw0Kc3RfY29uZGl0aW9uX0dPTEQ8LSBzdW1tYXJ5U0UoZGZfR09MRCwgbWVhc3VyZXZhciA9ICJjb25kaXRpb25fc2NvcmUiLCBncm91cHZhcnMgPSBjKCJkYXRlX2NvbGxlY3RlZCIpKQ0Kc3RfY29uZGl0aW9uX0dPTEQNCg0KYGBgDQojR09MRCBQcm9wb3J0aW9ucyBncmFwaCBCb2R5IGNvbmRpdGlvbiBzY29yZXMNCg0KYGBge3J9DQoNCkdPTERfQkNTX3Byb3BvcnRpb25zPC0gZGZfR09MRCAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQogIGdyb3VwX2J5KHNpdGUsIG1vbnRoLCB5ZWFyLCBjb25kaXRpb25fc2NvcmVfYmluKSAlPiUgZHBseXI6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCiAgdW5ncm91cCgpICU+JQ0KICBtdXRhdGUoUHJvcG9ydGlvbiA9IENvdW50L3N1bShDb3VudCkpDQoNCkdPTERfQkNTX3Byb3BvcnRpb25zPC0gbmEub21pdChHT0xEX0JDU19wcm9wb3J0aW9ucykNCg0KQkNTX3Byb3BvcnRpb25fR09MRCA8LSBnZ3Bsb3QoZGF0YT1HT0xEX0JDU19wcm9wb3J0aW9ucywgYWVzKHg9bW9udGgsIHk9IFByb3BvcnRpb24sIGZpbGw9Y29uZGl0aW9uX3Njb3JlX2JpbikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAuNSwgc3RhdD0iaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJmaWxsIiwgY29sb3VyID0gImJsYWNrIikrICANCiAgIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIA0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0PTEpKSsNCiAgbGFicyh0aXRsZT0iR29sZCBTdGFyIEJlYWNoIFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIiwgeCA9Im1vbnRoIiwgeSA9ICJQcm9wb3J0aW9uIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyAiKSsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPTkwKSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpKw0Kc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJCbHVlcyIsIGRpcmVjdGlvbiA9IC0xKSsNCiAgZmFjZXRfd3JhcCh+IHllYXIpDQpCQ1NfcHJvcG9ydGlvbl9HT0xEDQoNCg0KICANCnBkZihwYXN0ZTAocGF0aCA9ICJMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dCIgLCIvR09MRF9CQ1NfcHJvcG9ydGlvbi5wZGYiKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMykNCnByaW50KEJDU19wcm9wb3J0aW9uX0dPTEQpDQpkZXYub2ZmKCkNCmBgYA0KDQojICUgb2Ygc2NvcmVzID4zIGF0IGdvbGQganVuZSAtIG5vdmVtYmVyIA0KYGBge3J9DQpkZl9HT0xEDQoNCkdPTERfcHJlY2VudF9ncmVhdGVyXzMgPC0gZGZfR09MRCAlPiUNCiAgZHBseXI6Omdyb3VwX2J5KG1vbnRoLCBzaXRlLCB5ZWFyKSAlPiUNCiAgZHBseXI6OnN1bW1hcmlzZShQZXJjZW50YWdlID0gbWVhbihjb25kaXRpb25fc2NvcmUgPD0gMykqMTAwKQ0KR09MRF9wcmVjZW50X2dyZWF0ZXJfMw0KDQpHT0xEX0JDU19wZXJjZW50YWdlIDwtIEdPTERfcHJlY2VudF9ncmVhdGVyXzMgJT4lDQogIGdncGxvdChhZXMoeCA9IG1vbnRoLCB5ID0gUGVyY2VudGFnZSkpICsNCiAgI2dlb21fYmFyKHdpZHRoID0gMC41LCBzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZmlsbCIpICsNCiAgICBnZW9tX2NvbCgpKw0KICB0aGVtZV9idygpICsNCiAgdGhlbWUoDQogICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3QgPSAxKSwNCiAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDkwKSwNCiAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpLCBhbmdsZSA9IDApLA0KICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpDQogICkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIkdvbGQgU3RhciBCZWFjaCAlIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyA+PSAzIiwNCiAgICB4ID0gIm1vbnRoIiwNCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgYm9keSBjb25kaXRpb24gc2NvcmVzID49IDMiDQogICkgK2ZhY2V0X3dyYXAofnllYXIpDQogICMrIHNjYWxlX3hfY29udGludW91cyggYnJlYWtzID0gc2VxKDUsMTIsIGJ5ID0xKSApKw0KICAjeWxpbSgwLDYwKSsgDQogICNzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEwMCksIGJyZWFrcyA9IHNlcSgwLDEwMCwgYnkgPSAxMCkpIA0KDQogICAgDQpHT0xEX0JDU19wZXJjZW50YWdlDQoNCnBkZihwYXN0ZTAocGF0aCA9ICJMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dCIsICIvR09MRF9CQ1NfcGVyY2VudGFnZS5wZGYiKSxoZWlnaHQgPSA3LCB3aWR0aCA9IDEzKQ0KcHJpbnQoR09MRF9CQ1NfcGVyY2VudGFnZSkNCmRldi5vZmYoKSANCg0KDQoNCmBgYA0KDQpgYGB7cn0NCmdncGxvdChkYXRhPWRmX0dPTEQsIGFlcyh4PW1vbnRoLCB5PWhlaWdodF9tbSwgZ3JvdXA9IG1vbnRoKSkgKw0KICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9IkdvbGRzdGFyIEJlYWNoIE1lYW4gU2hlbGwgSGVpZ2h0ICIsIHggPSJtb250aCIsIHkgPSAiTWVhbiBTaGVsbCBIZWlnaHQgKG1tKSIpICsgI3NjYWxlX3hfY29udGludW91cyhsaW1pdHM9IGMoNCwxMSksIGJyZWFrcyA9IHNlcSg1LDEwLCBieSA9MSkpKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IEZBTFNFKSsgZmFjZXRfd3JhcCh+eWVhcikNCg0KYGBgDQoNCmBgYHtyfQ0KI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyMw0KZ2dwbG90KGRhdGE9ZGZfR09MRDIwMjMsIGFlcyh4PSBjb25kaXRpb24pKSArDQogIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJHb2xkc3RhciBCZWFjaCAgQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDIzICIsIHggPSJDb25kaXRpb24gY2F0ZWdvcml6YXRpb24iKSsNCiAgICBmYWNldF93cmFwKH4gbW9udGgsIHNjYWxlcyA9ICJmcmVlIikNCg0KI0NvbmRpdGlvbiBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCBzYW1wbGUgbW9udGhzIC0gMjAyNA0KZ2dwbG90KGRhdGE9ZGZfR09MRDIwMjQsIGFlcyh4PSBjb25kaXRpb24pKSArDQogIGdlb21fYmFyKCkrICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoImZvcmVzdGdyZWVuIiwib3JhbmdlIiwgInB1cnBsZSIpKSsNCiAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogICN0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJHb2xkc3RhciBCZWFjaCAgQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDI0IiwgeCA9IkNvbmRpdGlvbiBjYXRlZ29yaXphdGlvbiIpKw0KICAgIGZhY2V0X3dyYXAofiBtb250aCwgc2NhbGVzID0gImZyZWUiKQ0KDQojTWVhbiBCb2R5IGNvbmRpdGlvbiBwZXIgbW9udGgNCmdncGxvdChkYXRhPWRmX0dPTEQsIGFlcyh4PSBtb250aCwgeT0gY29uZGl0aW9uX3Njb3JlLCBncm91cCA9IG1vbnRoKSkgKw0KICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgbGFicyh0aXRsZT0iR29sZHN0YXIgQmVhY2ggIE1lYW4gQm9keSBDb25kaXRpb24gU2NvcmUgIiwgeCA9Im1vbnRoIiwgeT0gIiBjb25kaXRpb24gc2NvcmUgKDEtOSkiKSsgc2NhbGVfeV9yZXZlcnNlKCkgKyBmYWNldF93cmFwKH55ZWFyKQ0KICAjdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKSsNCg0KYGBgDQoNCg0KDQoNCiMgTGF1cmVsIEhvbGxvdyBTdW1tYXJ5IC0gTk8gTE9OR0VSIEEgU1RVRFkgU0lURQ0KYGBge3J9DQpkZl9MQVVSPC0gZGF0YV9hbGwlPiUNCiAgZmlsdGVyKHNpdGU9PSJMQVVSIikNCg0KIyMgU2hlbGwgSGVpZ2h0ICMjDQpzdF9oZWlnaHRfTEFVUiA8LSBzdW1tYXJ5U0UoZGZfTEFVUiwgbWVhc3VyZXZhcj0iaGVpZ2h0X21tIiwgZ3JvdXB2YXJzPWMoImRhdGVfY29sbGVjdGVkIikpDQpzdF9oZWlnaHRfTEFVUiANCg0KIyMgQm9keSBDb25kaXRpb24gIyMNCiMjIEV4Y2x1ZGVzIE1heSBkdWUgdG8gc2NvcmluZyBzeXN0ZW0gY2hhbmdlLiBNYXkgc2NvcmVkIGZhdCwgbWVkaXVtLCB3YXRlcnkuIA0Kc3RfY29uZGl0aW9uX0xBVVI8LSBzdW1tYXJ5U0UoZGZfTEFVUiwgbWVhc3VyZXZhciA9ICJjb25kaXRpb25fc2NvcmUiLCBncm91cHZhcnMgPSBjKCJkYXRlX2NvbGxlY3RlZCIpKQ0Kc3RfY29uZGl0aW9uX0xBVVINCmBgYA0KDQpgYGB7cn0NCmdncGxvdChkYXRhPWRmX0xBVVIsIGFlcyh4PW1vbnRoLCB5PWhlaWdodF9tbSwgZ3JvdXA9IG1vbnRoKSkgKw0KICBnZW9tX2JveHBsb3QoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9IiBMYXVyZWwgSG9sbG93IE1lYW4gU2hlbGwgSGVpZ2h0IC0gMjAyMyIsIHggPSJtb250aCIsIHkgPSAiTWVhbiBTaGVsbCBIZWlnaHQgKG1tKSIpDQoNCg0KYGBgDQpgYGB7cn0NCiNDb25kaXRpb24gZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgc2FtcGxlIG1vbnRocw0KZ2dwbG90KGRhdGE9ZGZfTEFVUiwgYWVzKHg9IGNvbmRpdGlvbikpICsNCiAgZ2VvbV9iYXIoKSsgICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZm9yZXN0Z3JlZW4iLCJvcmFuZ2UiLCAicHVycGxlIikpKw0KICB0aGVtZV9idygpICsgIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKyANCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQogIGxhYnModGl0bGU9IkxhdXJlbCBIb2xsb3cgQm9keSBDb25kaXRpb24gaW5kZXggLSAyMDIzIiwgeCA9IkNvbmRpdGlvbiBjYXRlZ29yaXphdGlvbiIpKw0KICAgIGZhY2V0X3dyYXAofiBtb250aCwgc2NhbGVzID0gImZyZWUiKQ0KDQoNCiNNZWFuIEJvZHkgY29uZGl0aW9uIHBlciBtb250aA0KZ2dwbG90KGRhdGE9ZGZfTEFVUiwgYWVzKHg9IG1vbnRoLCB5PSBjb25kaXRpb25fc2NvcmUsIGdyb3VwID0gbW9udGgpKSArDQogIGdlb21fYm94cGxvdCgpKyAgI3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJmb3Jlc3RncmVlbiIsIm9yYW5nZSIsICJwdXJwbGUiKSkrDQogIHRoZW1lX2J3KCkgKyAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkrIA0KICBsYWJzKHRpdGxlPSJMYXVyZWwgSG9sbG93IE1lYW4gQm9keSBDb25kaXRpb24gU2NvcmUgLSAyMDIzIiwgeCA9Im1vbnRoIiwgeT0gIiBjb25kaXRpb24gc2NvcmUgKDEtOSkiKSsgc2NhbGVfeV9yZXZlcnNlKCkNCiAgI3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkrDQpgYGANCiNMQVVSIFByb3BvcnRpb25zIGdyYXBoIEJvZHkgY29uZGl0aW9uIHNjb3JlcyAtIDIwMjMgKG9ubHkgc2FtcGxlZCBvbmUgeWVhcikNCg0KYGBge3J9DQoNCkxBVVJfQkNTX3Byb3BvcnRpb25zPC0gZGZfTEFVUiAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQogIGdyb3VwX2J5KHNpdGUsIG1vbnRoLCBjb25kaXRpb25fc2NvcmVfYmluLCB5ZWFyKSAlPiUgZHBseXI6OnN1bW1hcmlzZShDb3VudD0gbigpKSAlPiUNCiAgdW5ncm91cCgpICU+JQ0KICBtdXRhdGUoUHJvcG9ydGlvbiA9IENvdW50L3N1bShDb3VudCkpDQoNCkxBVVJfQkNTX3Byb3BvcnRpb25zPC0gbmEub21pdChMQVVSX0JDU19wcm9wb3J0aW9ucykNCg0KTEFVUl9CQ1NfcHJvcG9ydGlvbnMNCg0KQkNTX3Byb3BvcnRpb25fTEFVUjwtIGdncGxvdChkYXRhPUxBVVJfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpKw0KICBsYWJzKHRpdGxlPSJMYXVyZWwgSG9sbG93IFByb3BvcnRpb24gb2YgYm9keSBjb25kaXRpb24gc2NvcmVzIC0gMjAyMyIsIHggPSJtb250aCIsIHkgPSAiUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgIikrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMyksIGFuZ2xlID0gMCkpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKQ0KICAjZmFjZXRfd3JhcCh+IHllYXIpDQogI3NjYWxlX2ZpbGxfYnJld2VyKCkgKw0KICAjZmFjZXRfd3JhcCh+IHNpdGUpDQoNCkJDU19wcm9wb3J0aW9uX0xBVVINCiAgDQpwZGYocGFzdGUwKHBhdGggPSAiTGFiX0RhdGFfVGlzc3VlUHJvY2Vzc2luZy9vdXRwdXQiICwiL0xBVVJfQkNTX3Byb3BvcnRpb24ucGRmIiksIGhlaWdodCA9IDcsIHdpZHRoID0gMTMpDQpwcmludChCQ1NfcHJvcG9ydGlvbl9MQVVSKQ0KZGV2Lm9mZigpDQpgYGANCiMgJSBvZiBzY29yZXMgPjMgYXQgTEFVUiBqdW5lIC0gbm92ZW1iZXIgDQpgYGB7cn0NCg0KI3JlbW92aW5nIDA4MjNGRU5DXzI4IGJjcyB3YXMgTkENCmRmX0xBVVIuIDwtIGRmX0xBVVIlPiVmaWx0ZXIoIXJvd19udW1iZXIoKSAlaW4lIGMoMikpDQoNCkxBVVJfcHJlY2VudF9ncmVhdGVyXzMgPC0gZGZfTEFVUi4gJT4lDQogIGRwbHlyOjpncm91cF9ieShtb250aCwgc2l0ZSwgeWVhcikgJT4lDQogIGRwbHlyOjpzdW1tYXJpc2UoUGVyY2VudGFnZSA9IG1lYW4oY29uZGl0aW9uX3Njb3JlIDw9IDMpKjEwMCkNCkxBVVJfcHJlY2VudF9ncmVhdGVyXzMNCg0KTEFVUl9CQ1NfcGVyY2VudGFnZSA8LSBMQVVSX3ByZWNlbnRfZ3JlYXRlcl8zICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBtb250aCwgeSA9IFBlcmNlbnRhZ2UpKSArDQogICNnZW9tX2Jhcih3aWR0aCA9IDAuNSwgc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiKSArDQogICAgZ2VvbV9jb2woKSsNCiAgdGhlbWVfYncoKSArDQogIHRoZW1lKA0KICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0ID0gMSksDQogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSA5MCksDQogICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSwgYW5nbGUgPSAwKSwNCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKQ0KICApICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJHb2xkIFN0YXIgQmVhY2ggJSBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgPj0gMyIsDQogICAgeCA9ICJtb250aCIsDQogICAgeSA9ICJQZXJjZW50YWdlIG9mIGJvZHkgY29uZGl0aW9uIHNjb3JlcyA+PSAzIg0KICApICMrZmFjZXRfd3JhcCh+eWVhcikNCiAgIysgc2NhbGVfeF9jb250aW51b3VzKCBicmVha3MgPSBzZXEoNSwxMiwgYnkgPTEpICkrDQogICN5bGltKDAsNjApKyANCiAgI3NjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTAwKSwgYnJlYWtzID0gc2VxKDAsMTAwLCBieSA9IDEwKSkgDQoNCiAgICANCkxBVVJfQkNTX3BlcmNlbnRhZ2UNCg0KcGRmKHBhc3RlMChwYXRoID0gIkxhYl9EYXRhX1Rpc3N1ZVByb2Nlc3Npbmcvb3V0cHV0IiwgIi9MQVVSX0JDU19wZXJjZW50YWdlLnBkZiIpLGhlaWdodCA9IDcsIHdpZHRoID0gMTMpDQpwcmludChMQVVSX0JDU19wZXJjZW50YWdlKQ0KZGV2Lm9mZigpIA0KDQoNCg0KYGBgDQoNCmBgYHtyfQ0KI0NvZGluZyBncmFwaHMgZm9yIExJUyBDb25mZXJlbmNlIC0gb25seSAyMDIzIGRhdGENCmRhdGFfMjAyMyA8LSBkYXRhX2FsbCU+JSAgZmlsdGVyKCF5ZWFyPT0iMjAyNCIpDQoNCmRmX0JDU19wcm9wb3J0aW9uczwtIGRhdGFfMjAyMyAlPiUNCiAgbXV0YXRlKGNvbmRpdGlvbl9zY29yZV9udW1lcmljID0gYXMubnVtZXJpYyhjb25kaXRpb25fc2NvcmUpLGNvbmRpdGlvbl9zY29yZV9iaW4gPSBjYXNlX3doZW4oY29uZGl0aW9uX3Njb3JlID09IDEgfiAiMSIsIGNvbmRpdGlvbl9zY29yZSA9PSAyIH4iMiIsY29uZGl0aW9uX3Njb3JlID09IDMgfiAiMyIsIGNvbmRpdGlvbl9zY29yZSA9PSA0IH4iNCIsY29uZGl0aW9uX3Njb3JlID09IDUgfiAiNSIsIGNvbmRpdGlvbl9zY29yZSA9PSA2IH4iNiIsY29uZGl0aW9uX3Njb3JlID09IDcgfiAiNyIsIGNvbmRpdGlvbl9zY29yZSA9PSA4IH4iOCIsIGNvbmRpdGlvbl9zY29yZSA9PTkgfiI5IiwgVFJVRSB+IGFzLmNoYXJhY3Rlcihjb25kaXRpb25fc2NvcmUpKSkgJT4lDQogIGdyb3VwX2J5KHNpdGUsIG1vbnRoLCBjb25kaXRpb25fc2NvcmVfYmluKSAlPiUgZHBseXIgOjpzdW1tYXJpc2UoQ291bnQ9IG4oKSkgJT4lDQogIHVuZ3JvdXAoKSAlPiUNCiAgbXV0YXRlKFByb3BvcnRpb24gPSBDb3VudC9zdW0oQ291bnQpKQ0KDQpkZl9CQ1NfcHJvcG9ydGlvbnM8LSBuYS5vbWl0KGRmX0JDU19wcm9wb3J0aW9ucykNCg0KZGZfQkNTX3Byb3BvcnRpb25zJG1vbnRoIDwtIGZhY3RvcihkZl9CQ1NfcHJvcG9ydGlvbnMkbW9udGgsIGxldmVscyA9IGMoIjUiLCI2IiwiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiKSwNCiAgICAgICAgbGFiZWxzPWMoIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVnIiwgIlNlcHQiLCAiT2N0IiwgIk5vdiIpKQ0KZGZfQkNTX3Byb3BvcnRpb25zJHNpdGUgPC0gZmFjdG9yKGRmX0JDU19wcm9wb3J0aW9ucyRzaXRlLCBsZXZlbHMgPSBjKCJBU0hDIiwiRkVOQyIsIkdPTEQiLCAiTEFVUiIpLA0KICAgICAgICBsYWJlbHM9YygiQXNoIENyZWVrIiwgIkZlbmNlIENyZWVrIiwgIkdvbGQgU3RhciIsICJMYXVyZWwgSG9sbG93IikpDQoNCmJjcy5wcm9wLjIwMjMgPC0gZ2dwbG90KGRhdGE9ZGZfQkNTX3Byb3BvcnRpb25zLCBhZXMoeD1tb250aCwgeT0gUHJvcG9ydGlvbiwgZmlsbD1jb25kaXRpb25fc2NvcmVfYmluKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IC41LCBzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uID0gImZpbGwiLCBjb2xvdXIgPSAiYmxhY2siKSsgIA0KICAgdGhlbWVfYncoKSArICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSwgc2l6ZSA9IHJlbCguOSkpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvci54ID1lbGVtZW50X2JsYW5rKCkpKw0KICBsYWJzKHRpdGxlPSJCb2R5IGNvbmRpdGlvbiBzY29yZXMgaW4gMjAyMyIsIHggPSJNb250aCIsIHkgPSAiUHJvcG9ydGlvbiBvZiBib2R5IGNvbmRpdGlvbiBzY29yZXMgIikrIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGFuZ2xlID05MCksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGFuZ2xlID0gMCkpKyBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkJsdWVzIikgKw0KICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSkpKw0KICB0aGVtZSAobGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCkpKw0KICB0aGVtZSh0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTcpKSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE3KSkrDQogIGxhYnMoZmlsbCA9IkJvZHkgQ29uZGl0aW9uIFNjb3JlIikrDQogIGZhY2V0X3dyYXAofiBzaXRlICkNCmJjcy5wcm9wLjIwMjMNCg0KI3BkZihwYXN0ZTAocGF0aCA9ICJMYWJfRGF0YV9UaXNzdWVQcm9jZXNzaW5nL291dHB1dCIgLCIvQkNTX3Byb3BvcnRpb25fMjAyMy5wZGYiKSwgaGVpZ2h0ID0gNywgd2lkdGggPSAxMykNCiNwcmludChiY3MucHJvcC4yMDIzKQ0KI2Rldi5vZmYoKQ0KDQojQkNTX3Byb3BvcnRpb25fYWxsK3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiMwMDNDMzAiLCIjMDE2NjVFIiwiIzgwQ0RDMSIsIiNDN0VBRTUiLCIjRjZFOEMzIiwiI0RGQzI3RCIsIiNCRjgxMkQiLCAiIzhDNTEwQSIsIiM1NDMwMDUiICkpDQojc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzAwM0MzMCIsIiMwMTY2NUUiLCIjODBDREMxIiwiI0M3RUFFNSIsImF6dXJlMSIsInNsYXRlZ3JheTEiLCJzbGF0ZWdyYXkzIiwgInNsYXRlZ3JheTQiLCAiZ3JheTI1IiApKSANCg0KZiA8LSBmdW5jdGlvbihwYWwpIGJyZXdlci5wYWwoYnJld2VyLnBhbC5pbmZvW3BhbCwgIm1heGNvbG9ycyJdLCBwYWwpDQooY29scyA8LSBmKCJZbEduQnUiKSkNCmBgYA0KDQpgYGB7cn0NCiNDb2RpbmcgZ3JhcGhzIGZvciBMSVMgQ29uZmVyZW5jZSAtIG9ubHkgMjAyMyBkYXRhIChjb250aW51ZWQpDQoNCmRmXzNfcHJvcDwtIHNlbGVjdChkYXRhXzIwMjMsIC1jKCJzaXRlIikpDQoNCiNDb3VudCBhbmQgcHJvcG9ydGlvbiB0YWJsZSBmb3IgMjAyMyBiY3Mgc2NvcmVzIGJ5IG1vbnRoDQpiY3NfdGFibGUgPC0gdGFibGUoZGF0YV8yMDIzJGNvbmRpdGlvbl9zY29yZSwgZGF0YV8yMDIzJG1vbnRoLCBkYXRhXzIwMjMkc2l0ZSkNCm5hbWVzKGRpbW5hbWVzKGJjc190YWJsZSkpIDwtIGMoIkJvZHkgQ29uZGl0aW9uIFNjb3JlIiwgIk1vbnRoIiwgIlNpdGUiKQ0KYmNzX3RhYmxlIDwtIGFkZG1hcmdpbnMoYmNzX3RhYmxlKQ0KYmNzX3RhYmxlDQoNCmBgYA0KDQoNCmBgYHtyfQ0Kc2Vzc2lvbkluZm8oKQ0KYGBgDQoNCg0KQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkN0cmwrQWx0K0kqLg0KDQpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkN0cmwrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4NCg0KVGhlIHByZXZpZXcgc2hvd3MgeW91IGEgcmVuZGVyZWQgSFRNTCBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZWRpdG9yLiBDb25zZXF1ZW50bHksIHVubGlrZSAqS25pdCosICpQcmV2aWV3KiBkb2VzIG5vdCBydW4gYW55IFIgY29kZSBjaHVua3MuIEluc3RlYWQsIHRoZSBvdXRwdXQgb2YgdGhlIGNodW5rIHdoZW4gaXQgd2FzIGxhc3QgcnVuIGluIHRoZSBlZGl0b3IgaXMgZGlzcGxheWVkLg0K